服务器品牌 DELL
服务器型号 PE1850
cpu类型 Intel Xeon 2.80GHz
cpu个数 2
内存条类型 512M
内存条个数 2
硬盘类型1 36G
硬盘个数1 1
操作系统:Linux centos2 2.6.18-92.el5
Apache 2.0
PHP 5.2.9
目前300并发,持续时间1小时
测试截图:
下午进行LoadRunner测试,
100用户并发时,响应时间在1.5s左右。
400用户并发时,响应时间约为3s,但每秒连接数一直处于170左右,无法继续上升。
此时,web服务器CPU占用70%-80%
Db服务器为2%,基本无压力。
在网上看到一些文章,Apache在配置正确的情况下基本上可以处理每秒2K的并发请求,但今天的测试让我大跌眼镜。
响应时间也不够理想,况且这次的测试只是测了首页的访问,而且首页是做了缓存处理的。
最开始是怀疑httpd.conf中最大连接数没有设置正确,改动后重启Apache依然如此。
最令人担忧的是居高不下的CPU占用率。
希望有在Apache下配置Discuz经验的大虾们能给一个合理的配置方案。

个人认为使用nginx更好一些,一个是因为nginx确实有比apache更高的并发处理能力,另外也是因为dz官方就是用的 nginx。另外看看是否和 mysql 的配置有关
1. ngix
2. php加速器 apc/eacc
3. zend优化器
4. squid
5. memcached
6. mysql的配置优化
@linnchord:
这个列出来的不是一时半会能解决的,如memcache的应用。
mysql方面目前基本上没什么压力。
哪个linux?我现在有一台dell 1950,CentOS默认配置的apache,请求phpinfo2000多rps,discuz首页也就220左右吧。我使用了APC缓存,提高了php执行效率。其他都是针对前端的优化,估计对压力测试工具没什么用处。
个人觉得不用刻意去追求所谓最大连接数,连接数不够时,apache日志可以反应出来,逐渐调整即可。如果并发很高的,合理设置keepAlive也许是个好想法。另外,高并发情况下,php解释器调用的开销是非常大的,换成fastcgi会好很多。你的内存只有1G,那强烈建议你换nginx或者lighttpd吧。
discuz不熟,那个说2000多的文章能不能让我看看?
同上nginx^_^
ServerTokens ProductOnly
ServerSignature Off
DeflateCompressionLevel 3
vhost:
SetOutputFilter DEFLATE
Header set Connection close
apache 在优化后的性能是很强的。
应该不会是这个样子的。
是不是mysql 的连接处了问题。
mysql 默认安装后的连接好像是100个。
还有仔细查看 mysql 和apache 的日志,看看在最大负荷时,日志中有什么提示吗?
BTW: APC, EAC, XCache 等也是很有必要的.
不知道你用的什么版本的linux ,
推荐 centos 之类的服务器版本做。
一些桌面版本可能不太适合。
@rssidea:
谢谢你的建议。
服务器操作系统是centos 5.2.
内存只有1G,
你所说的“discuz首页也就220左右吧”是指什么?
@phoenix:
的确,我也不认为apache在这种情况下的表现如此“差劲”。
mysql这边基本没有压力,CPU只有2%左右。
而且昨天lr只是测试的首页访问,而且首页基本上是静态的了,基本上涉及不到DB查询。
apache日志倒是没有去看过,谢谢你的提醒。
@星辉一冷:
兄弟,你这也太抽象了~~~
@phoenix:
系统是 centos 5.2.
@rssidea:
discuz不熟,那个说2000多的文章能不能让我看看?
当时随意翻到了,出处可能找不到了^_^
是不是你的测试方法有问题。
1> loadrunner的脚本中是否包含了 其他静态资源的载入。比如图片,样式表,脚本等等。可以一并去掉
2> 只测试首页页面即可,write_cookie等浏览器响应可以保留。
3> 静态资源可以放到其他的服务器上,修改论坛的资源相对地址为绝对地址就好了,可以显著的提升页面展示速度。 Apache 对静态资源的处理是非常差的,nginx 是不二的选择。
4> 在论坛这种应用中,nginx, apache 的差别并不大,瓶颈在磁盘IO与数据库IO
GOOD LUCK ^_^
@kevin:
第一轮测试是发现有这样的问题,有一些图片是其它服务器上的地址。
第二轮去掉了这些图片。
直接点我还是感觉服务器上的配置有问题:-/
1)nginx
2)增加图片超时时间,可以考虑使用YSLOW的建议来优化;
应该是应用程序配置或某些业务逻辑问题。
从你的ResponseTime来看,感觉每2分钟响应时间就上去,而且还小有规律(图给的太少),从文中得知“web服务器CPU占用70%-80%”,那应该是某些业务“忙碌”而导致。
可以尝试解决:
增加个空Php网页测试,如继续此情况,说明是服务器配置问题。
如果是.Net可以windbg,php就。。。
嗯,这个方法已经测试过,曾经压测过一个phpinfo();这个响应时间与并发数还是比较好的。
我不愿去相信这是Discuz的问题。
可以用xdebug和WinCacheGrind分析下是否为Discuz的问题