嗨,我已经使用java NIO创建了一个套接字和客户端程序.我的服务器和客户端在不同的计算机上,服务器有LINUX OS,CLIENT有WINDOWS OS.每当我在客户端机器上创建1024个套接字时我的客户端机器支持但在服务器中我有太多文件打开错误.那么如何在服务器上没有任何错误的情况下打开15000个套接字.或者还有其他方法可以同时连接15000个客户端吗?
谢谢Bapi
好的,质疑他为什么需要15K插座是一个单独的讨论.
答案是您正在达到用户的文件描述符限制.
使用您将在侦听器中使用的用户进行日志记录并执行$ ulimit -n以查看当前限制.
最有可能是1024.
使用root编辑文件 /etc/security/limits.conf
并设置 - >
{username} soft nofile 65536
{username} hard nofile 65536
Run Code Online (Sandbox Code Playgroud)
65536只是一个建议,您需要从您的应用程序中找出答案.
注销,再次登录并使用ulimit -n重新检查,看它是否有效.
你可能需要超过15个fds.使用lsof监控您的应用.
像这样:
$lsof -p {pid} <- lists all file descriptors
$lsof -p {pid} | wc -l <- count them
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您也可能达到系统范围的fd限制,因此您需要检查它:
$cat /proc/sys/fs/file-max
Run Code Online (Sandbox Code Playgroud)
要增加该行,请将此行添加到/etc/sysctl.conf中
#Maximum number of open FDs
fs.file-max = 65535
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4443 次 |
最近记录: |