【发布时间】:2010-10-20 03:16:25
【问题描述】:
我有一个在 5 分钟内编写的非常简单的程序,它打开一个服务器套接字并循环通过请求并将发送给它的字节打印到屏幕上。
然后我尝试对我可以锤击它的连接数进行基准测试,以尝试找出我可以通过该程序支持多少并发用户。
在另一台机器上(它们之间的网络未饱和),我创建了一个简单的程序,该程序进入一个循环并连接到服务器机器并发送字节“hello world”。
当循环为 1000-3000 时,客户端完成发送所有请求。当循环超过 5000 时,它在完成前 X 个请求后开始超时。为什么是这样?我确保在循环中关闭我的套接字。
你只能在某个时间段内创建这么多连接吗?
这个限制是否只适用于同一台机器,我不必担心生产环境中 5000 多个请求都来自不同的机器?
【问题讨论】:
-
您可以使用 ss -s 命令监控您的套接字。如果需要,请按照步骤增加套接字限制
-
您可以重用 TIMED_WAIT 套接字,例如:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)