【发布时间】:2010-08-31 23:21:10
【问题描述】:
我有一个 java 服务器(1 个进程),它为每个传入连接生成一个线程。我知道编译到内核中的文件描述符限制为 1024。
1个进程可以支持多少个socket连接有限制吗?
【问题讨论】:
我有一个 java 服务器(1 个进程),它为每个传入连接生成一个线程。我知道编译到内核中的文件描述符限制为 1024。
1个进程可以支持多少个socket连接有限制吗?
【问题讨论】:
在 Linux 上查看/proc/sys/fs/file-max。
您可以将自己的价值呼应到其中。
还要确保增加用户限制:ulimit -n
在 BSD 上它将是 sysctl kern.maxfiles 和 sysctl kern.maxfilesperproc
【讨论】:
除了 hroptatyr 提到的操作系统文件句柄限制之外,您可能还需要确保在侦听器套接字上为连接积压使用提升的值。如果您的服务器应用程序暂时繁忙并且无法足够快地响应传入连接,这将允许更多连接在操作系统返回“连接被拒绝”之前排队。
如果您在 Java 中使用 ServerSocket,您可以将所需的积压工作指定为构造函数的参数:
ServerSocket server = new ServerSocket(listenPort, 50);【讨论】: