向公司申请了台设备做测试机,打算把公司各种应用服务都自己练练,熟悉一下。先从最传统的squid开始做压力测试。先发一个小东东http_load的测试:
服务器硬件条件:内存2096M,CPU2.33GHz,硬盘70G; Squid版本:Version 2.6.STABLE22
单台服务器:沈阳 web页面由nginx发布,采用基础配置,监听8080端口,网站页面类型包括.htm/html/css/js/xml; 前端由squid代理,采用公司默认配置,由cache_peer请求本机页面,监听80端口; 测试访问地点:北京
创建url文件,添加url记录共11条,其中html六条,js三条,css/xml各一条。(本来还有一个tar.gz文件,结果文件有近2M,影响测试结果,放弃) 根据网友经验,采取fetches参数配合parallel参数测试。
命令如下:./http_load -f 3000 -p 100 url > result.txt
根据情况调整parallel参数。
** 当p到180以上后,测试过程中就开始出现类似下面这样提示:
http://www.test.com/ts.js: Connection timed out
http://www.test.com/ts.js: byte count wrong
而结果中的fetches/sec则在650-850之间随机出现,属于不太稳定的状态了。而p再往上提高(我从200一直实验到500), fetches/sec基本都在800左右,而msecs/connect则从50上升到255左右。 ** 当p在140以下时,fetches/sec在1500以上,msecs/connect在0.2左右,bytes/sec在85000左右(此时服务器iptraf -d eth1查看流量大概每秒12M); ** 当p到140以上后,f/s迅速下降到1000左右,ms/c则上升到10以上;parallel从150到180的过程中,f/s、ms/c和b/s基本是均速变化的;同时查看服务器的iostat或者vmstat,一般us在90%多,bo偶然有1出现(后来发现是因为我放的测试文件大小相差较大)。
squid服务在并发数140以下时,能够提供优质的服务,140以上,性能逐渐下降,当并发数到200以上后,遭遇瓶颈,主要在CPU方面。
公司在线服务的设备,一般eth1流量都能跑到60M,有些甚至上了100M,这跟测试结果相差也太大了?