由于 websocket 和 Apache,服务器负载过高
High Load on server due to websocket and Apache
我们有 2 台服务器(Ubuntu 14.04 - 4 个 vCPU 和 12 GB RAM),运行 一个带有 Apache 2.4.7 的 codeigniter 应用程序。这些服务器也是负载平衡的。我们一次平均有 300 名用户访问该站点,并且该网站在许多区域都具有刷新功能。所以我们引入了websockets来降低负载。但即使在引入之后,我们仍面临着高负载。其中一台服务器上的节点 运行。启用 mod_status 后,我可以看到没有为 apache 打开新连接。
虚拟主机
<VirtualHost *:443>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/html/domain
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/apache2/ssl/domain-ssl/a.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain-ssl/domain.key
SSLCertificateChainFile /etc/apache2/ssl/domain-ssl/gd_bundle.crt
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/node/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule "^/node/socket.io" "ws://IPADDRESS:8080/socket.io/" [P,L]
ProxyPreserveHost On
ProxyRequests off
</VirtualHost>
<Location /node/>
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
ProxyPass http://IPADDRESS:8080/ connectiontimeout=3 timeout=3 retry=0
ProxyPassReverse http://IPADDRESS:8080/
</Location>
请告诉我您需要对此进行调查的详细信息。谢谢
我为节点和redis安装了一个单独的服务器,减少了负载。
我们有 2 台服务器(Ubuntu 14.04 - 4 个 vCPU 和 12 GB RAM),运行 一个带有 Apache 2.4.7 的 codeigniter 应用程序。这些服务器也是负载平衡的。我们一次平均有 300 名用户访问该站点,并且该网站在许多区域都具有刷新功能。所以我们引入了websockets来降低负载。但即使在引入之后,我们仍面临着高负载。其中一台服务器上的节点 运行。启用 mod_status 后,我可以看到没有为 apache 打开新连接。
虚拟主机
<VirtualHost *:443>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/html/domain
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/apache2/ssl/domain-ssl/a.crt
SSLCertificateKeyFile /etc/apache2/ssl/domain-ssl/domain.key
SSLCertificateChainFile /etc/apache2/ssl/domain-ssl/gd_bundle.crt
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/node/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule "^/node/socket.io" "ws://IPADDRESS:8080/socket.io/" [P,L]
ProxyPreserveHost On
ProxyRequests off
</VirtualHost>
<Location /node/>
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
ProxyPass http://IPADDRESS:8080/ connectiontimeout=3 timeout=3 retry=0
ProxyPassReverse http://IPADDRESS:8080/
</Location>
请告诉我您需要对此进行调查的详细信息。谢谢
我为节点和redis安装了一个单独的服务器,减少了负载。