故障一、linux too many open files
linux系統出現Too many open files 錯誤,這是因為文件描述符大小不夠,或者有不正常的網絡連接(Socket也是一種特殊的文件)、文件IO沒有關閉并釋放出文件描述符(文件句柄,File Operator)。
使用如下命令查看系統對允許打開最大文件描述符的配置:
ulimit -u 查看open files設置
ulimit -a 查看所有設置
ulimit -u 65535(新的open files 值)修改設置
ulimit -n 65536 設置用戶可以同時打開的最大文件數(max open files)
如果本參數設置過小,對于并發訪問量大的網站,可能會出現too many open files的錯誤
使用lsof -p pid [httpd進程的 pid、java的pid]來查看系統中apache進程和java運行時進程當前打開的文件資源,發現兩者之和已經接近1024,大于了默認的設置。
修改配置:
修改/etc/security/limits.conf,在文件末加上
* soft nofile 65536
* hard nofile 65536
系統級文件描述符極限還可以通過將以下三行添加到 /etc/rc.d/rc.local 啟動腳本中來設置:
# Increase system-wide file descriptor limit.
echo 65536 > /proc/sys/fs/file-max
echo 65536 > /proc/sys/fs/inode-max
二、tomcat 性能優化,連接數調整
1, Tomcat內存參數配置
如果是Win與Linux系統啟動Tomcat服務器,需要在tomcat/bin/catalina.sh與/tomcat/bin/catalina.bat兩個文件:在兩個文件里面加如:
SET CATALINA_OPTS= -Xms64m -Xmx128m
2, Tomcat連接數配置
配置Tomcat連接數.需要在Server.xml文件里面加如:
maxThreads=”150″ 表示最多同時處理150個連接
minSpareThreads=”25″ 表示即使沒有人使用也開這么多空線程等待
maxSpareThreads=”75″ 表示如果最多可以空75個線程,例如某時刻有80人訪問,之后沒有人訪問了,則tomcat不會保留80個空線程,而是關閉5個空的。
acceptCount=”100″ 當同時連接的人數達到maxThreads時,還可以接收排隊的連接,超過這個連接的則直接返回拒絕連接。
connectionTimeout=”20000″ maxThreads=”150″
minSpareThreads=”25″
maxSpareThreads=”75″
enableLookups=”false”
acceptCount=”100″ debug=”0″
disableUploadTimeout=”true”
redirectPort=”8443″ URIEncoding=”UTF-8″/>
URIEncoding=”UTF-8″ 是設定JSP編碼格式
原文來自 http://blog.mgcrazy.com/?page_id=10