標籤:伺服器 linux 異常 io
大多數原因是因為程式沒有關閉開啟的資源串連, 如RMI、資料庫等串連才導致的。 當然也有可能能同時有超過Linux本身預設的檔案開啟數。
一、 先從Linux設定入手
(1) ulimit -a (查看資源設定情況)
core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 30525max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 1024virtual memory (kbytes, -v) unlimitedfile 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();}}
java.net.SocketException: 開啟的檔案過多