1.主要方向:在源碼項目中尋找所有引用了InputStream或者其他流的地方,查看其是否在使用完後,正常close掉,此處建議將流的close放到finally塊中,這樣異常時也會去close流。
2.次要方向:session或者其他有用到socket的代碼處,仔細查詢看是否有沒有釋放資源的地方
另附:
在Linux中執行下面2個指令可以看出系統預設open files的1024不足以支撐測試,請相應調整為4096。
在系統訪問高峰時間以root使用者執行下面的指令碼,可能出現的結果如下:
# lsof -n|awk ‘{print$2}’|sort|uniq -c |sort -nr|more
1170 32229
57 24244
57 24231
56 24264
其中第一列是開啟的檔案控制代碼數量,第二列是進程號。
# ps-aef|grep 32229
root 32229 1 33 10:58 pts/0 00:09:17/usr/java/jdk1.6.0_32/bin/java-Djava.util.logging.config.file=/kmsapp/apache-tomcat-6.0.35_engine/conf/logging.properties-Xms512m -Xmx2048m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/kmsapp/apache-tomcat-6.0.35_engine/endorsed -classpath/kmsapp/apache-tomcat-6.0.35_engine/bin/bootstrap.jar-Dcatalina.base=/kmsapp/apache-tomcat-6.0.35_engine-Dcatalina.home=/kmsapp/apache-tomcat-6.0.35_engine -Djava.io.tmpdir=/kmsapp/apache-tomcat-6.0.35_engine/temporg.apache.catalina.startup.Bootstrap start
發現是tomcat進程開啟最多檔案控制代碼數量,而且它開啟了1170個檔案控制代碼數量,超出了1024的預設值。
所以應該將值調為4096,那麼要想永久性的調整,請按如下2步操作:
1、修改/etc/security/limits.conf
通過 vi /etc/security/limits.conf修改其內容,在檔案最後加入(數值也可以自己定義):
* soft nofile = 4096
* hard nofile = 4096
2、修改/etc/profile
通過vi/etc/profile修改,在最後加入以下內容:
ulimit -n4096
然後重新登入即可生效了。