Nginx 性能很差怎么回事,只能达到几百的 qps

2019-06-28 12:07:27 +08:00
 luckyrayyy

前几天项目压测用到了 Locust,今天无聊就写几个简单用例测着玩。开始用 spring boot 写 hello world,qps 大几百,但是我对这个数没什么概念,心想最快的应该是 nginx 这种静态服务器了吧,nginx 又是以性能出色著称的。

然后试了试,竟然还是几百...我开始怀疑 Locust 是不是不给力处理不了太多请求,然后换 vert.x 的客户端进行请求,发现也就刚一千的 qps。

我记得看 web 服务器框架的性能排行榜,普遍能到几十万的数量级,即便我机器性能一般,几万总得有吧,然后换 vert.x 的 client 请求 vert.x 的 server,qps 一下就上来了,到五万多。

所以我没搞明白 nginx 到底哪里有问题,是我需要修改某些特定的配置吗? worker processes 和 worker connections 都已经调高了,还需要改什么吗?

8397 次点击
所在节点    问与答
25 条回复
alvinbone88
2019-06-28 17:28:40 +08:00
配置 NGINX 使用 epoll ( Linux )或 kqueue ( Mac )
Mac 上跑 docker 相当于开虚拟机跑 Linux,所以直接选 epoll 就行
yanguangs
2019-06-28 19:03:15 +08:00
有可能是测试工具的问题
我们前几天碰到的问题就是 nginx 配了还不如没配的情况.
但我们使用 jmeter 测试出来的指标又很正常.

最后发现开发用的 Jmeter 与测试的 loadrunner 的 http headers 不一样
loadrunner 的 useragent 为 mozilla4.0 而 jmeter 为 mozilla5.0
iyaozhen
2019-06-28 22:21:57 +08:00
@luckyrayyy 另外 Locust 是模拟 1000 个用户的请求,自己用 vert.x 的 client 是用了几十一百个线程的线程池不断请求

这个没看懂,locust 调用 vert.x 当发压端?
sakurazensen
2020-06-07 22:37:07 +08:00
8c16G 的 nginx,就一个 hello,world 静态页面,用 jmeter 压测只有 2w 的 TPS 不知道咋回事
luckyrayyy
2020-06-07 23:15:50 +08:00
@sakurazensen 哈哈哈哈一年前的坟你也挖出来了,后来发现了 Nginx 默认的配置并不适合这么高的并发,把线程数增加就行了。worker_connections 调高就能高不少,另外继续优化的话要改很多参数,包括 Linux 的配置,文件描述符数量等等一堆东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/578256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX