Chinaunix首页 | 论坛 | 博客
  • 博客访问: 361535
  • 博文数量: 42
  • 博客积分: 3970
  • 博客等级: 中校
  • 技术积分: 714
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-13 15:31
文章分类

全部博文(42)

文章存档

2009年(19)

2008年(23)

我的朋友

分类: 系统运维

2009-07-13 00:12:41

硬件环境: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。



阅读(1830) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~