[web] http_load更适合性能测试
写了个httpd服务,测试性能。
用curl发200k的请求,回复也是200k的消息,调用20次curl,花了30秒。
这性能看上去很低,但我发现httpd的CPU消耗也很低,那是慢在哪里了?
于是自己写了个client端,一次send 200k的消息,再收200k,重复1000遍,发现超快,几秒就完成了,server端httpd消耗的CPU也高起来了,占到70%,看来不是我写的httpd的问题,压根就是curl启动慢,白耗时间。
curl不适合用来做性能测试,http_load更适合,但它不带body,所以我改了改http_load.c,加了个参数 -body ,后面跟body的大小(单位是KB),比如:
./http_load -p 5 -s 600 -body 100 url.list
意思是5个并发,跑600秒,body为100k大,跑完后显示QPS几百,够了。
我改动后的http_load.c代码在这里,diff在这里。body的大小不能超过200k,因为我的测试足够了。另外还把SO_SNDBUF开到了最大(rhel4上是128k),因为想把200k一次send出去,这样改最方便。
相关文章
- [tcp] http_load报"Cannot assign requested address" - 01 27, 2010
- fedora 9 小集 - 01 05, 2009
- 多线程调试 - 12 17, 2008
用集团出的那个 abench吧,比http_load好很多.
abench开源吗?如果是私有的,无法向读者交待呵 :)
用httperf吧,我对比过ab, siege, http_load, webbench和httperf,这是最好用的一个了.
http_load有几个问题: url多了load文件特别慢, 是卡在query dns的地方;还有就是-rate参数在较大的时候不准...
恩, 这个是开源的.
好,我下次试试httperf