Cannot create GC thread. Out of system resources.

错误信息:

1
Cannot create GC thread. Out of system resources.

问题背景:

使用普通用户部署项目报这样的错误信息。

错误原因:

Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量。
也就是说普通用户有软硬件的限制。这不是授权就可以解除的。

解决办法:

1
2
3
cd /etc/security/limits.d

vim 20-nproc.conf

修改如下内容:

文件原内容:

1
2
*          soft    nproc     4096
root soft nproc unlimited

文件修改后的内容:

1
2
*          soft    nproc     unlimited
root soft nproc unlimited

最终使用普通用户部署就不会再出现这样的错误了。

另外之所以做这样的限制是为了避免前端请求,后端处理时,一些恶意的请求导致对应的进程会增加,从而占用内存。如果不做一定的限制,可能会使得整个服务器宕机。这也就是为什么前端接口要鉴权,后台要有一个机制来识别哪些是恶意的请求。之前一直觉得微服务组件Sentinel没用,但后来发现其实它还是有用的,至少它可以在一定程度上起到一个识别是否是正常请求的作用,对于哪些频繁的恶意请求,Sentinel直接转向其它提示信息,并不会走到后端真正的处理逻辑从而避免不必要的资源消耗。

文章目录
  1. 1. 错误信息:
  2. 2. 问题背景:
  3. 3. 错误原因:
  4. 4. 解决办法: