公司的业务都是基于HTTP协议Java开发的,也就是说使用Nginx+Tomcat这种组合,今日看到NodeJS不错,就对照其中一个业务(对应一个Servlet)做了一个NodeJS版本,测试结果让我非常失望。
公司业务原始架构: Nginx + Tomcat + Redis + Mysql
NodeJS版架构: NodeJS + Redis (默认数据已经载入Redis,不需要再读数据库) 使用了generic-pool作为Redis的连接池
测试结果 Java版每秒处理峰值3.6K req#/sec左右 (说明:ab -n 1000 -c 100 ,直接对一台Tomcat压) NodeJS版每秒只能处理1.6K req#/sec
这让我情何以堪啊。说真的,这种测试结果让我很疑惑,近日还听说网易用这玩意做了一个游戏引擎,这货的性能真的如传说中那么NB吗?
莫非有阻塞?
是不是业务逻辑很复杂 可以看看这篇文章~里面讲了node适用及不适用的场合http://nodeguide.com/convincing_the_boss.html
node是单进程,你要测试性能,要用cluster多开几个进程来跑 这样比较结构才有比较意义
Cluster是个好东西,我用了之后性能大幅提高,NodeJS已经可以跑到4.5K req#/sec啦。
@smcdl 很屌啊,比Java厉害
nodejs跑helloword 跟nginx不相上下
你可以测试下jetty,jetty的并发比tomcat要强一点 我测试的结果是
jetty7.5 2302.57rps
tomcat7.0.32 2062.93rps
测试环境 linux-2.6.18 contos5.4 ab -n 10000 -c 250
lz应该看看node的适用场景,对于pomelo可以先看看文档,性能调优也是一步一步做的。 https://github.com/NetEase/pomelo/wiki/pomelo性能参考