嗨,我使用 java NIO 创建了一个套接字和客户端程序。 我的服务器和客户端位于不同的计算机上,服务器有 LINUX 操作系统,客户端有 WINDOWS 操作系统。每当我在客户端上创建 1024 个套接字时,我的客户端计算机都支持,但在服务器中我遇到了太多文件打开错误。 那么如何在服务器中打开 15000 个套接字而不出现任何错误。 或者有没有其他方式可以同时连接15000个客户端?
谢谢 巴比
最佳答案
好吧,质疑为什么他需要 15K 套接字是一个单独的讨论。
答案是您达到了用户的文件描述符限制。
使用您将在监听器中使用的用户登录并执行 $ulimit -n 以查看当前限制。
最有可能是 1024。
使用 root 编辑文件 /etc/security/limits.conf
并设置->
{username} soft nofile 65536
{username} hard nofile 65536
65536 只是一个建议,您需要从您的应用中找出答案。
注销,重新登录并使用 ulimit -n 重新检查,看看它是否有效。
您可能需要超过 15 个 fd 才能完成所有这些操作。使用 lsof 监控您的应用程序。
像这样:
$lsof -p {pid} <- lists all file descriptors
$lsof -p {pid} | wc -l <- count them
顺便说一句,您也可能达到系统范围的 fd 限制,因此您需要检查它:
$cat /proc/sys/fs/file-max
要增加该值,请将此行添加到/etc/sysctl.conf
#Maximum number of open FDs
fs.file-max = 65535
关于java - java NIO 中打开文件过多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797375/