女服务生因人脉过多导致504分

2024-04-29 17:11:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我们有一个应用程序每秒收到20-30个请求。尽管我们对性能变量进行了调整,女服务员似乎在负荷下屈曲。它不会崩溃也不会出错。相反,它似乎向Nginx发送(我们假设)一个ERRCONRESET,Nginx正在向它发送请求。这个假设来自服务生文档,该文档指出当积压工作超过其限制时,它可能会向请求方发送errconreset。此外,Nginx在女服务员负重的情况下,会向我们返还504美元。python应用程序本身似乎继续运行良好。在

我们尝试增加线程数(50个线程)和连接限制(1000个)。我们还降低了通道超时和清理间隔(分别为10秒和15秒)。这仍然显示在负载下性能没有改善。最后,我们甚至试图将积压的货物增加到2048件。这些都没有产生任何重大影响。在

在某种程度上,我甚至想知道,新的限制是否得到遵守,因为运行netcat显示长时间运行的连接没有被终止超过60秒。我们的印象是女服务员应该能应付这件事,但事实并非如此。值得注意的是,我们已经在一个LB后面扩展到了6个并发实例来接收请求,但仍然会出现这些错误。在

如有任何反馈或绩效提示,我们将不胜感激。我们在kubernetes上运行这些强大的AWS实例。它们占用的CPU和RAM资源可以忽略不计。当它确实工作时,它的毫秒返回时间,所以我看不出代码中可能有什么瓶颈,只有这样的事实:连接和积压工作正在被淹没。在

请看下面我们的女服务员配置启动应用程序。在

waitress.serve(app.app,
               host=os.getenv('HOST', '0.0.0.0'),
               port=int(os.getenv('PORT', '3000')),
               expose_tracebacks=True, 
               connection_limit=os.getenv('CONNECTION_LIMIT', '1000'),
               threads=os.getenv('THREADS', '50'),
               channel_timeout=os.getenv('CHANNEL_TIMEOUT', '10'),
               cleanup_interval=os.getenv('CLEANUP_INTERVAL', '30'),
               backlog=os.getenv('BACKLOG', '2048'))

Tags: 实例文档app应用程序osnginx性能线程