周六公司的一台服务器负载过大,重启
之后登陆上去查看了下httpd.conf和服务器状态
net -nap | grep :80 | wc -l 发现大量的连接数差不多有1万多
net -nap | grep :80 | grep TIME_WAIT | wc -l 发现和总连接数非常接近大概9000多
net -nap | grep :80 | grep TIME_WAIT | grep 某ip | wc -l 发现有些ip time_wait个数居然有600多
检查了httpd.conf
发现TIMEOUT 300 KeepAlive off
推断 大量TIME_WAIT 是因为 TIMEOUT 时间过长, 单IP time_wait数过多是因为 KeepAlive off
修改配置
TIMEOUT 10
KeepAlive On
MaxKeepAliveRequests 400 #注这里数字要大一些,但和apache允许客户端总数相比要小很多
KeepAliveTimeout 10
重启apache以后 net -nap | grep :80 | wc -l 降低到200多
第二天晚上高峰时观察服务器,除了偶尔负载高一些意外,一切正常
今天早上又给服务器增加了页面输出压缩模块,以加快数据传输速度,提高web服务器的吞吐量
apache 版本 httpd-2.0.54
cd modules
cd filters
$APACHE_HOME/bin/apxs -I . -i -a -c -o mod_deflate.so mod_deflate.c
cd ../metadata/
$APACHE_HOME/bin/apxs -I . -i -a -c -o mod_headers.so mod_headers.c
vi $APACHE_HOME/conf/httpd.conf
增加
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \ \.(?:gif|jpg|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
这样页面输出压缩模块就安装好了,晚上负载高的时候看运行效果
mod_deflate 模块可以细化到设置输出 多大到多大范围内的文件才进行压缩输出,我这个只是简单配置,具体其他配置看apache的文档了
阅读(832) | 评论(0) | 转发(0) |