当客户机(jmeter)触发超过1000个并行HTTP请求时,会发生ETIMEDOUT

2024-04-20 11:51:53 发布

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

我有一个python应用程序,它使用eventlet Green thread(1000个绿色线程池)来建立HTTP连接。每当客户端触发超过1000个并行请求时,就会发生ETIMEDOUT。有人能帮我解释一下可能的原因吗?在


Tags: 应用程序http客户端原因green线程threadeventlet
1条回答
网友
1楼 · 发布于 2024-04-20 11:51:53

这种情况下最可能的原因是:DNS服务器请求限制。您可以通过消除DNS解析(请求http://{ip-address}/path,不要忘记添加适当的Host:头)来轻松检查是否是这种情况。如果您进行web爬网,这些步骤不是可选的,您必须:

  • 基于聚合(即平均)执行时间自动控制并发(无需人工操作)。这一点在各个层面都是独立适用的。如果DNS响应较慢,请退出并发DNS请求。如果响应速度(主体大小/时间)变慢,请退出TCP并发。如果您的CPU过载,请退出整个请求并发-不要请求超过您可以处理的。在
  • 在临时失败时重试,每次增加等待重试时间,搜索backoff algorithm。如何判断错误是否是暂时的?主要是研究,尝试和错误。在
  • 运行本地DNS服务器,查找并配置多个上游

高并发性的下一个流行问题是开放连接和文件描述符数量的操作系统限制。搜索sysctl somaxconn和{}来修复这些问题。在

相关问题 更多 >