我目前正在测试一个带有模拟大量用户的自动测试客户端的服务器.服务器和客户端都是用Java编写的.客户端为每个用户打开tcp/ip连接.服务器和客户端都在Ubuntu linux上运行,客户端在11.04上运行,服务器在10.04上运行.
测试进行到27000并发打开连接,之后我决定跳到36000(服务器和客户端资源实际上并没有用完27000所以我决定稍稍跳一点).当我尝试运行36k的测试时,我在客户端遇到以下异常:
据我所知,在36k我仍然应该有自由端口,因为在这两台机器上运行的其他东西并不多,而且tcp将端口号限制在2 ^ 16,这是65536. 现在因为它是linux我也设置了打开文件的数量用户使用ulimit -n 100000获得100k.但我仍然得到相同的异常.
我想知道还有什么可能导致上述异常的原因,还是linux以某种其他方式限制了传出连接的数量?
提前致谢,
海伦芬
默认情况下,Linux从32768..61000范围内选择动态分配的端口.如果绑定到特定端口号,则其他可用于静态分配.如果您希望更多端口可用于动态分配,则可以更改范围,但请注意不要包含用于所需特定服务的端口(例如,对于X11而言为6000).此外,您不应允许动态分配端口<1024,因为它们具有特权.要检查或更改范围:
$ cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
# echo "16384 65535" > /proc/sys/net/ipv4/ip_local_port_range
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5213 次 |
| 最近记录: |