出乎意料之外的nodejs性能

最近在搞项目,后端开发用到的环境是nodejs+mysql(一般很少会用nodejs去做后端吧),但我们偏偏就是那个独角兽。为了顺利上线,对2个接口进行了一波压测,不测不知道,这一测还真带来了惊喜,压测结果出乎了大家的意料之外呀。

服务器配置和接口特性

服务器:
1)web:6核24线程 + 32GB
2)mysql:10核40线程 + 64GB

2个接口特性如下:
1)isLogin接口:select多、inster和update少;
2)领奖接口:select、inster和update都多;

压测工具:
1台~3台,jemeter。


闲话少说,这直接就上数据了。冲冲冲!!!

第一波压测,单web和nodejs单进程性能压测。

单台web、单nodejs进程

web、DB服务器的使用率

描述一下第一波压测结果,刚开始压测同学保守用了10个并发,这不,小看了吧,TPS完全没上去。后面就加大了马力100个并发,TPS上升了。我们发现nodejs 对cpu的使用率非常高,超过了100%(这里是cpu多个线程累加的使用率)。而且pm2 list看到结果也是cpu使用率100%了,但nodejs对内存的使用率却非常少,这个可能是js的特点吧。至于mysql的cpu和内存使用率都还行,不算很高。
第一波总结:单web、nodejs单进程,isLogin接口稳定在TPS:380,领奖接口稳定在TPS:280


第二波压测,单web和nodejs(cluster 4)性能压测。

单台web、nodejs(cluster 4集群)

web、DB服务器使用率

再来描述一下第二波压测结果,明显、非常明显,当开启cluster模式后,性能马上翻倍了。web的cpu依旧很高,然后mysql的cpu飙升非常恐怖,超过100%。应该可以煮鸡蛋了:)
第二波总结:单web、nodejs(cluster 4),isLogin接口稳定在TPS:1300,领奖接口稳定在TPS:987

话说,前面两波都是在测试环境下进行压测的,但产品想知道在真实环境下的nodejs压测性能,于是,我们开启了真nodejs、真实环境的压测。

第三波终极压测开启,4台web(每台cluster 4)性能压测。

4台web(每台cluster 4)

web、DB服务器使用率

最后描述一下第三波压测结果,测评同学一开始使用单台压测机,但结果总是压在其中1台web上,于是我们提供了不同地方的服务器(共3台)进行压测,这样均摊到每台上了。从上表中可以直观看到TPS再次被提升了,但是有小概率报错。
第三波总结:4台web(每台cluster 4),isLogin接口稳定在TPS:2500,领奖接口稳定在TPS:2300

补充一点:当时我产生了一些疑惑,觉得nodejs性能是不是太好了点,于是问另一组专业压测同学要来了一份java+mysql的压测报告(服务器和接口逻辑都差不多),他们的java接口压测报告上写了tps:1700。这。。。。。。。

展开阅读全文

页面更新:2024-04-30

标签:性能   使用率   线程   进程   特性   接口   稳定   同学   环境   服务器

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top