首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python应用程序--让N个工作人员不把QPS乘以N?

Python应用程序--让N个工作人员不把QPS乘以N?
EN

Stack Overflow用户
提问于 2014-08-14 14:09:03
回答 1查看 1.2K关注 0票数 0

我有一个同步的单进程web应用程序,CPU绑定为2,200 QPS。当我进行多次处理时,QPS只显示有限的增幅:

  • 单一工艺: 2200 QPS。top显示CPU为100%
  • 2名工人: 2230 QPS。top以60%的速度显示每个进程
  • 4名工人: 2280 QPS。top以30%的速度显示每个进程

我不明白这些数字。为什么两个进程不将QPS乘以2?四个过程4?

实现细节

  • 这个网络应用程序只是回应一个GET请求。我用了Falcon,它是文档中的示例的拷贝粘贴
  • 服务器运行在gunicorn后面。下面是用于:的命令行
    • 单进程:gunicorn things:app
    • 两名工人:gunicorn things:app -w 2
    • 四名工人:gunicorn things:app -w 4

  • 我使用locust来执行负载测试和测量产生的QPS。配置:一个主人和五个奴隶。每个GET请求之间的等待时间:0 ms。
  • 所有东西都运行在localhost上。测试机有16个内核,因此web应用程序的每个进程和负载测试的每个进程都使用自己的核心。

更多的结果

正如dano所建议的,我在GET处理程序中插入了一个time.sleep。以下是产生的QPS:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-14 15:01:18

看起来,locust向您的服务器发送查询的速度受到了限制(也可能限制了gunicorn将请求分发给工作人员的能力)。由于没有网络延迟,而且服务器几乎不工作(因此响应时间非常快),您就可以像蝗虫发送查询一样快速地进行响应。

古尼科恩博士强烈建议在NGINX之后运行它。。也许试一试,看看这对性能有什么影响。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25310183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档