python - 确定 TCP listen() 队列中当前积压的连接数

标签 python linux sockets tcp twisted

有没有办法找出 Linux 上的 TCP 套接字上等待 accept() 的连接尝试的当前 次数?

我想我可以计算在每个事件循环上命中 EWOULDBLOCK 之前成功的 accepts() 的数量,但我使用的是隐藏这些细节的高级库 (Python/Twisted)。它还使用 epoll() 而不是老式的 select()/poll() 循环。

我正在尝试大致了解高性能非阻塞网络服务器上的负载,我认为这个数字是一个很好的表征。平均负载/CPU 统计数据帮助不大,因为我在并发工作进程中执行大量磁盘 I/O。 Linux 上的大多数这些统计数据都将等待磁盘 I/O 的时间计为负载的一部分(对于我的特定服务器架构而言,它不是)。 accept() 和响应之间的延迟也不是一个好的衡量标准,因为一旦服务器开始处理每个请求,它通常会很快得到处理。我只是想知道我离到达断点有多近,在该断点处服务器无法比请求的传入速度更快地分派(dispatch)请求。

最佳答案

在我见过的 BSD 套接字 API 中没有这方面的功能。我怀疑它是否真的是一种有用的负载度量。一方面,您假设客户端没有连接池,并且您还假设延迟完全表现为挂起的连接。但由于无论如何您都无法获得号码,所以这一点没有实际意义。

关于python - 确定 TCP listen() 队列中当前积压的连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126372/

相关文章:

c# - WCF 或自定义套接字体系结构

c - C 中的代理服务器 - 多个

perl - IO::Select线程中的select()包装器安全吗?如何解决?

python - 重复请求发布到 scrapy FormRequest

python - 如何在命令行中使用 http.server 作为参数传递 file.py?

python - 编程面试要素中的死锁题19.5

linux - OS调度和RTOS调度的区别

php - 脚本上传到实时服务器后不起作用

Python Web 套接字不从 coinbase pro api 返回建议数据

java - 如何转义java特殊字符并运行Linux命令