gpt4 book ai didi

java - 遇到 java.net.bindexception 无法分配请求地址的问题

转载 作者:IT王子 更新时间:2023-10-29 00:54:03 26 4
gpt4 key购买 nike

我目前正在使用模拟大量用户的自动测试客户端测试服务器。服务器和客户端都是用 Java 编写的。客户端为每个用户打开一个 tcp/ip 连接。服务器和客户端都运行在Ubuntu linux上,客户端运行在11.04上,服务器运行在10.04上。

直到 27000 个同时打开的连接,测试都进行得很好,之后我决定跳到 36000(服务器和客户端资源并没有真正用完 27000,所以我决定跳得稍微大一点)。 当我尝试运行 36k 的测试时,我在客户端遇到了以下异常:

  • java.net.BindException: 无法分配请求的地址

据我所知,在 36k 时我应该仍然有空闲端口,因为两台机器上都没有运行太多其他东西,并且 tcp 将端口号限制在 2^16,即 65536。现在因为它是 linux,我也设置了使用 ulimit -n 100000 将用户打开的文件数设置为 100k。但我仍然遇到同样的异常。

我想知道还有什么可能导致上述异常,或者 linux 是否以其他方式限制传出连接的数量?

提前致谢

丹尼尔

最佳答案

默认情况下,Linux 从 32768..61000 范围内选择动态分配的端口。如果您绑定(bind)到特定端口号,则其他可用于静态分配。如果您希望更多端口可用于动态分配,则可以更改范围,但请注意不要包括用于您需要的特定服务的端口(例如 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

关于java - 遇到 java.net.bindexception 无法分配请求地址的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145108/

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