Per LWP的效率太差了

Per LWP的效率太差了

用Perl写个测试服务器的http客户端小脚本,结果效率真的很差。<20req/s
同样单进程,
改用bash+nc,还比它强 <40req/s
用gawk的网络接口,效率提高了不少 <80req/s
后用erlang改写了,效率才初步体现 <500req/s

看来性能测试的Case,就别用Perl了,不太合适。
应该是程序算法的问题
那就用 erlang 好了。

BTW:不知道 apache 的那个 ab 怎么样?
楼主测试过吗?


QUOTE:
原帖由 flw 于 2008-8-13 12:47 发表
那就用 erlang 好了。

BTW:不知道 apache 的那个 ab 怎么样?
楼主测试过吗?

ab测试了一把,单进程 70req/s
-c 20 和 -c 50 都差不多 220req/s

不知道还能否深挖!

看来erlang的inets库还是不错的。
LWP用途很多....硬要拿来做测试主机能力...似乎有点强人所难...原本LWP设计...
就不是为了测试主机能力的..再加上Perl要use 的library那麽大..效率不好是正常的吧...

httperf应该比ab更好。


QUOTE:
原帖由 apile 于 2008-8-14 11:14 发表
LWP用途很多....硬要拿来做测试主机能力...似乎有点强人所难...原本LWP设计...
就不是为了测试主机能力的..再加上Perl要use 的library那麽大..效率不好是正常的吧...


也是没办法,由于等待处理的数据会比较多,而且限时处理,所以需要在这种效率下正常工作,而且还要对每个服务器的响应做一些处理。
对perl还算熟,而且perl处理http的响应也比较方便,所以拿来试了一下,功能是有了,效率无法支持。

试验中,还发现如果起多个进程,perl的LWP还会互相阻塞HTTP请求的发送,导致有些进程有时候就吊在那里。
请求发不出去。