`

java.net.SocketException: Too many open files

阅读更多

       刚才写脚本出现了一个异常java.net.SocketException: Too many open files ,以前没有遇到过,试了几次都这样。后来看了一下linux的限制(执行ulimit -a 命令)显示如下

 

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 71680
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 71680
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

    其中open files 为1024 ,好像有点小,将它调整大一点试一下就ok了(ulimit -n 65536)。注意:这个调整只影响你的创建的子进程不会影响,不会影响其他人。

 

   有时候在linux上的服务器也会抛出这个错误 ,只要在启动服务器的脚本执行前添加一些代码。设置ulimit 例:

 

 

 76 ulimit -s 128
 77 ulimit -n 8192

 

    以前只是知道ulimit 命令这次算是用上啦!!

Linux下如何查看进程打开的文件以及修改进程打开文件数上限

1. 查看进程打开文件
在/proc下,对应每个进程有一个以进程号命名的目录,该目录下有一个fd目录,该目录下面的每个文件是一个符号连接,其文件名对应该进程占用的一个文件描述符,而连接指向的内容表示文件描述符对应的实际文件。

2. 修改进程打开文件数上限
Linux 默认的进程打开文件上限是1024个,可以通过ulimit -n查看。很多系统上限可以通过修改/etc/security/limits.conf文件改变,这个文件有详细的注释,对如何修改做了说明。如果希望把所有用户的进程打开文件上限改为65536,可以加入下面两行

* soft nofile 65535
       * hard nofile 65535
还可以只真对某个用户或某个组做修改,具体方法参见文件注释。修改后需要重新启动系统才能生效。

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics