公司游戏提交到sina微博平台,同时还需要提供一份压力测试报告,因为没有压力测试的经验,所以查了不少资料,走了不少弯路,做一个总结,分享给大家吧
首先我们只有1台服务器,8G内存,操作系统centos5.5(64位),安装了Mysql 5.5,Apache 2.2.17,TC 1.4.47,TT 1.1.41,PHP 5.3.5,这么多的软件都跑在一台机子上,着实有点担心伤不起啊
选择web压力测试软件的时候,做了一番选择,有ab,siege,最终还是选择了webbench,理由是webbench开源免费,安装方便,可以模拟高达3w的并发,同时参数简单,省去了不少研究的功夫
webbench的官网是:http://home.tiscali.cz/~cz210552/webbench.html
同时介绍比较详细的网址有:http://blog.s135.com/post/288/
1.安装先
#wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz #tar -zxvf webbench-1.5.tar.gz #make #make install
2.写一段php代码,包含了经常调用且需要操作mysql,tt,假设url是 http://mytest.com/
开始测试前,还需要几个准备工作
3.写一个shell脚本ps.sh,记录每秒的http请求数
#!/bin/sh while [ 1 ] do ps aux | grep httpd | wc -l sleep 1 done
4.再写一个shell脚本ms.sh,记录每秒最高的请求数
#!/bin/bash m=0 while [ 1 ] do c=$(ps aux | grep httpd | wc -l) if [ $m -lt $c ]; then m=${c} echo $m fi sleep 1 done
5.给shell脚本权限后,开启2个远程窗口,分开运行脚本
#chmod +x ps.sh #./ps.sh
#chmod +x ms.sh #./ms.sh
6.开启新窗口,查看内存和cpu使用情况
#top
7.开启新窗口,webbench压力测试,8000的并发,持续30秒
#webbench -c 8000 -t 30 http://mytest.com/
8.得到结果,各自的操作窗口的数据进行总结了
9.优化apache的并发配置,加上了自己的注释
// 注释: 查看编译的模块 // 这里是查看是否编译prefork.c #/usr/local/apache/bin/apachectl -l Compiled in modules: core.c prefork.c http_core.c mod_so.c
// 编辑httpd.conf #vi /usr/local/apache/conf/httpd.conf // 去掉“#” # Server-pool management (MPM specific) Include conf/extra/httpd-mpm.conf
// 编辑httpd-mpm.conf #vi /usr/local/apache/conf/extra/httpd-mpm.conf // 刚才看到是prefork.c,这里就派上用场了 // 编辑prefork模块 <IfModule mpm_prefork_module> // 启动apache同时产生10个进程 StartServers 10 // 最少50个空闲进程,理解最少50个候补人员,供apache差遣 MinSpareServers 50 // 最多100个空闲进程,如果少于MinSpareServers,则在MinSpareServers基础上+1 MaxSpareServers 100 // 此项如果不存在,自行添加,如果允许最大客户端超过256个,此项必须设置,必须在MaxClients之前,必须大于MaxClients ServerLimit 3000 // 允许的最大并发数 MaxClients 3000 // 每个并发数允许的最多子进程,如果超过,会直接杀死进程 MaxRequestsPerChild 1000 </IfModule>
配置好apache后,记得重启,先stop在start比较保险
#/usr/local/apache/bin/apachectl stop #/usr/local/apache/bin/apachectl start
10.调整心得
11.总结
总算把报告提交上去了,也不知道能不能通过