錯誤信息:
Cannot create GC thread. Out of system resources.
問題背景:
使用普通用戶部署項目報這樣的錯誤信息。
錯誤原因:
Linux是有文件句柄限制的,而且Linux默認不是很高,一般都是1024,生產服務器用其實很容易就達到這個數量。
也就是說普通用戶有軟硬件的限制。這不是授權就可以解除的。
解決辦法:
cd /etc/security/limits.d vim 20-nproc.conf
修改如下內容:
文件原內容:
* soft nproc 4096 root soft nproc unlimited
文件修改后的內容:
* soft nproc unlimited
root soft nproc unlimited
最終使用普通用戶部署就不會再出現這樣的錯誤了。
另外之所以做這樣的限制是為了避免前端請求,后端處理時,一些惡意的請求導致對應的進程會增加,從而占用內存。如果不做一定的限制,可能會使得整個服務器宕機。這也就是為什么前端接口要鑒權,后台要有一個機制來識別哪些是惡意的請求。之前一直覺得微服務組件Sentinel沒用,但后來發現其實它還是有用的,至少它可以在一定程度上起到一個識別是否是正常請求的作用,對於哪些頻繁的惡意請求,Sentinel直接轉向其它提示信息,並不會走到后端真正的處理邏輯從而避免不必要的資源消耗