大多数原因是因为程序没有关闭打开的资源连接, 如RMI、数据库等连接才导致的。 当然也有可能能同时有超过Linux本身默认的文件打开数。
一、 先从Linux设置入手
(1)
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) 30525 max locked memory (kbytes, -l) 64 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) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
open files默认是1024
为了使服务器重启设置还能生效, 采取永久改变的方法。
vim /etc/security/limits.conf
在文档最后添加
* soft nofile 65535 * hard nofile 65535
(2) vim /etc/pam.d/login
在文档最后添加
session required /lib/security/pam_limits.so
二、 程序
记得在finally语句块里面关闭资源连接, 如:
finally{ if (connector != null) { connector.close(); } }
时间: 2024-10-06 21:08:29