問題現象:
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 查看當前進程:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END