硬件环境:dell2950, E5430, 4G内存
操作系统:centos 5.3 x86_64
应用软件:nginx-0.7.59(源码编译) ,apache-2.2.3(rpm),php-5.1.6(rpm).
压力工具: ab和webbench
ab:ab -n 30000 -c 1000 URL
30000个请求,并发100.
webbench: webbench -c 100 -t 30 URL
100个并发请求持续30秒
说明:apache就是用prefork方式运行,php为apache一个模块
nginx16个子进程,php-cgi,64个进程。
1、1.5M图片测试
差不多。
2、简单的php页面测试
apache快不少。
3、mysql连接
$conn = mysql_connect('192.168.1.1', 'test', 123456');
mysql_select_db('test');
mysql_close($conn);
?>
a) 上面这种连接差不多。
b) 把mysql_connect换成mysql_pconnect,apache要快不少。
这里把mysql_connect和mysql_pconnect做个说明。
mysql_connect和mysql_pconnect都是对数据库的连接,只不过后者是个持久连接,就是说当php页面对mysql连接结束后,这个连接不会马上断开,加入还有一个来自同样主机的同样子进程,连接的参数都一样的话,这个连接就能直接用到持久连接,而不需要重新连接。这样就能提高php连接数据库的效率。在这里,mysql_close()这个函数似乎没用。mysql_connect中,无论有没有显示调用mysql_close(),连接都会在页面请求完毕的时候释放。mysql_pconnect中,无论有没有显示调用mysql_close(),连接都还保存着。上面的论述同样适用是apache和nginx.
2009.7.12结果:
上面的测试貌似是apache性能比nginx强大,不过应该是nginx没有配置好导致nginx性能没发挥出来,顺便说一下,在测试的时候,压apache时候,机器的负载都会随着并非的增多而加大,而nginx不会,把php-cgi进程加到128,性能反而下降,继续探索中。
2009.7.13结果:
上网找了文档发现默认的nginx的编译是带debug的,这样会使nginx的二进制代码大很多。带debug的有2.4M,不带的就是536K。
# cd nginx-0.7.59
# vim auto/cc/gcc
CFLAGS="$CFLAGS -g" //注释掉这行
# ./configure --prefix=/usr/local/nginx-0.7.59 --with-poll_module
# make && make install
修改完继续测试,
webbench -c 5000 -t 30 URL
5000的并发压30秒,文件为phpinfo()
性能略微提高,出错率减少。性能和apache持平。还是没有大幅度超过apache。
阅读(1824) | 评论(0) | 转发(0) |