免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2174 | 回复: 5
打印 上一主题 下一主题

多核环境中,Starlet是Perl的最快HTTP服务器? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-06 13:53 |只看该作者 |倒序浏览
今天看到日本人的评测,自己也简单测一下看看
Starman,Twiggy,Feersum和Starlet,其中feersum用的是native模式,starman和starlet是10个worker
测试就用了一个简单的hello world的psgi,和ab -c 200 -n 20000 http://127.0.0.1:3000/

我现在一个单核的虚拟机中测试,以下是结果:
Requests per second:    1377.50 [#/sec] (mean)
Requests per second:    2617.24 [#/sec] (mean)
Requests per second:    4885.80 [#/sec] (mean)
Requests per second:    2694.96 [#/sec] (mean)
和想象中一样,单线程的情况下feersum自然最快

之后在2×Intel(R) Xeon(R) CPU X5675  @ 3.07GHz服务器上测试了一次,结果如下:
Requests per second:    7215.47 [#/sec] (mean)
Requests per second:    5107.35 [#/sec] (mean)
Requests per second:    18672.57 [#/sec] (mean)
Requests per second:    20309.47 [#/sec] (mean)

服务器是12核24线程的,从结果上看,Starman是没能利用多核的环境,Starlet正相反。而Feersum本身只是工作在单核单线程,所以结果不如starlet.
实际上还是Feersum更快,毕竟它是最多就是跑满了一个核

有没有了解的人知道,为什么Starman会和Starlet差这么多?还有就是Feersum如何才能启动多个做个负载均衡?

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
2 [报告]
发表于 2013-05-06 15:27 |只看该作者
-c 200太少,对于event base的http server,至少要上千
感觉app server一般单核就够了,前面可以弄nginx

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
3 [报告]
发表于 2013-05-06 15:55 |只看该作者
本帖最后由 iakuf 于 2013-05-06 15:57 编辑

并发的环境,如果不考虑事件编程,只要高于你进程数量来打 ab 就好了,所以 200 并发是完全可以了,再加并发数对于进程模型不会有改变,所以只要远高于 Worker 数量的并发,就能很好的体现性能了。我们是测试处理的事务数,并不是测试并发连接数。
PS:在这需要注意两个概念“连接数”和“事务数(处理数)”。
另外,Starman 你升级到最新了吗?  作者好象前半个月才修复了多 Worker 的时候性能没明显提升的问题。
另外 12核24线程,你可以让每个核一个 Worker ,所以建议你开成和核一样多的 Worker 来测试.
最新的 Starlet 也有很大的性能提升,听讲 Starlet 在 5.16 上性能比 5.8 上好很多。
还有一个地方影响,就是使用原生方式启动服务,还是使用 plackup 来启动.

论坛徽章:
0
4 [报告]
发表于 2013-05-06 17:20 |只看该作者
iakuf 发表于 2013-05-06 15:55
并发的环境,如果不考虑事件编程,只要高于你进程数量来打 ab 就好了,所以 200 并发是完全可以了,再加并发 ...

我看到那个升级了,所以测试之前升级了Starman和Starlet。Perl是5.14.2
测试的时候starman,twiggy和feersum都是不是plackup启动的,Starlet没有原生启动方式,所以用了plackup
另外,feersum无论是否--native速度都差不多

多问一个问题,feersum和mojolicious一起用的时候总报错:
  1. Feersum try_conn_write: Bad file descriptor
  2. close at write shutdown: Bad file descriptor
复制代码
是在运行很简单的“mojo generate lite_app”生成的例子
Dancer就没这个问题

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
5 [报告]
发表于 2013-05-06 17:39 |只看该作者
回复 4# anyevent

有关 Mojo 使用 Feersum 的问题,可以看看下面的这个文章。没测试过,不知道怎么样。
https://github.com/kraih/mojo/pull/152

   

论坛徽章:
0
6 [报告]
发表于 2013-05-06 19:59 |只看该作者
iakuf 发表于 2013-05-06 17:39
回复 4# anyevent

有关 Mojo 使用 Feersum 的问题,可以看看下面的这个文章。没测试过,不知道怎么样。 ...

这是唐凤两年前发的bug了,现在已经没有这个问题了。我这问题奇怪。。。我对PSGI不熟
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP