gpt4 book ai didi

python - epoll 中如何通知 connect() 失败?

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:47 25 4
gpt4 key购买 nike

我正在编写一个简单的测试脚本 (python) 来测试 Web 服务器的性能(该服务器所做的只是 HTTP 重定向)。 Socket 设置为非阻塞,并注册到一个 epoll 实例。

我怎么知道 connect() 失败是因为服务器不能接受更多的连接?我目前使用 EPOLLERR 作为指标。它是否正确?

编辑:假设:1) 不考虑IP层网络不可达。

最佳答案

这捕获了 Connection Refused 和其他套接字错误的情况。由于我假设您也在挂起的套接字上注册读/写可用性(成功),因此您还应该手动超时那些未能通知您相关文件描述符上的读、写或错误可用性的连接可接受的时间限制。

ECONNREFUSED 通常仅在服务器的 accept() 队列超过其限制或服务器甚至未绑定(bind)到远程端口的套接字时返回。 ENETDOWNEHOSTDOWNENETUNREACHEHOSTUNREACH 仅在低于 TCP 的层(例如 IP)时返回知道它由于某种原因无法到达主机,因此它们对于压力测试 Web 服务器的性能并不是特别有用。

因此,您还需要限制建立连接所花费的时间,以涵盖压力测试失败场景的全部范围。超时值的选择由您决定。

关于python - epoll 中如何通知 connect() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com