Linux下Tomcat性能優化--文件句柄數增大


今天在對項目進行性能壓力測試時,設置並發量為1000,發現Tomcat控制報錯:

java.IOException:打開的文件過多

經搜索,發現是由於Linux默認設置的句柄數為1024,當並發量過大,就不夠用了;

原因:   

    操作系統的中打開文件的最大句柄數受限所致,常常發生在很多個並發用戶訪問服務器的時候.因為為了執行每個用戶的應用服務器都要加載很多文件(new一個socket就需要一個文件句柄),這就會導致打開文件的句柄的缺乏.

解決: 

  • 盡量把類打成jar包,因為一個jar包只消耗一個文件句柄,如果不打包,一個類就消耗一個文件句柄.
  • java的垃圾回收不能關閉網絡連接打開的文件句柄,如果沒有執行close()(例如:java.net.Socket.close())則文件句柄將一直存在,而不能被關閉.你也可以考慮設置socket的最大打開數來控制這個問題.
  •  對操作系統做相關的設置,增加最大文件句柄數量。

采用增大句柄數的方法解決;

  • 查看當前設置句柄數:ulimit -a

可以看到,open files 為1024, 而且提示了參數為 -n,下面我們修改該值: ulimit -n 65536

再次查看:ulimit -a

open files 已經變成我們需要的 65536

不過上述修改方法只是當前生效,如果要永久生效,還是要修改配置文件

在/etc/security/limits.conf 添加 (* 代表所有用戶有效,你也可以配置具體的用戶名)

           * soft nofile 65536

           * hard nofile 65536

 可復制運行此段:

echo -ne "
* soft nofile 65534
* hard nofile 65534
" >>/etc/security/limits.conf

  • 修改完退出重新登錄就生效了,可重新用ulimit -a查看是否生效。

參考鏈接:https://jameswxx.iteye.com/blog/2096461

                  http://www.360doc.com/content/12/1116/13/834950_248186612.shtml

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM