問題現象:
Tomcat(8.5.13)部署了SuperMap iServer,並髮用戶在100左右。系統運作一段時間後,服務崩潰。異常提示
問題分析:
1、看到日誌中的提示訊息後,認為是系統記憶體不足導致的。於是在伺服器上新增了監控腳本(如下圖),每1s記錄一次系統記憶體和tomcat記憶體。
監控一段時間後,異常再次出現。從日誌中並未發現記憶體異常
2、記憶體排除後,思路轉到是否是由於並髮用戶數太多,導致的進程數超出呢?
1)查看linux 目前使用者的資源限制參數 ulimit -a
2)在上面這些參數中,關注得比較多的是一個進程可開啟的最大檔案數,即open files。系統允許建立的最大進程數量就是max user processes 這個參數。 我們可以使用 ulimit -u 4096 來修改max user processes的值,但是只能在目前終端機的這個session裡面生效,重新登入後還是會使用系統預設值。
正確的修改方式是修改/etc/security/limits.d/90-nproc.conf檔案中的值。先看一下這個檔案包含什麼:
$ cat /etc/security/limits.d/90-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096
我們只要修改上面檔案中的4096這個值,即可。
經過排查,確實是由於伺服器目前使用者設定的最大進程數設定太小導致的無法建立進程,崩潰。
參考:
#linux 查看目前流程:
以上是Linux 下tomcat錯誤分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!