0
点赞
收藏
分享

微信扫一扫

runtime/cgo: pthread_create failed: Resource temporarily unavailable or fork: Cannot allocate mem

舍予兄 2023-02-14 阅读 123

出现runtime/cgo: pthread_create failed: Resource temporarily unavailable错误


情况描述:docker ps 查看运行的容器,发现提示一大堆的英文代码,其中提示一句

runtime/cgo: pthread_create failed: Resource temporarily unavailable一脸懵逼,怎么会出现这些东西,我之前运行的容器呢,怎么就不见了。不过恰好容器搭建的网站可以正常访问。就是docker ps 显示不正常的数据,运行的容器没有显示出来。如下图↓

 runtime/cgo: pthread_create failed: Resource temporarily unavailable  or  fork: Cannot allocate mem_docker


通过top查看一下进程,free -mh 查看一下剩余内存,剩余内存300M左右,top查看负载也不是很高。然后多执行几次top or free -mh命令,发现提示fork: Cannot allocate memory错误。

 runtime/cgo: pthread_create failed: Resource temporarily unavailable  or  fork: Cannot allocate mem_docker_02



原因:

进程数超限导致。系统内部总进程数达到了pid_max时,再创建新进程时会报“fork: Cannot allocate memory”错。


处理步骤:

1.执行以下命令,查看系统pid_max值。(最大的进程数)

sysctl -a |grep pid_max

发现返回结果是fork: Cannot allocate memory”错。

证明总进程数已经超限了,需要临时调大pid_max

echo 65535 > /proc/sys/kernel/pid_max


再次执行命令,查看系统pid_max的值,命令执行成功,已经成功调大系统总进程数值。

cat /etc/sys/kernel/pid_max

2.执行以下命令,查看系统内部总进程数。


pstree -p | wc -l


(pstree的命令执行不成功,需要自己安装 yum -y install psmisc

系统默认总进程数32768,下面是程序更新后某个项目进程数减少的数值。

 runtime/cgo: pthread_create failed: Resource temporarily unavailable  or  fork: Cannot allocate mem_centos7_03



ps -efL 命令,可以定位启动进程较多的程序


3.如果让修改的最大进程数阈值永久生效,需要修改配置文件

kernel.pid_maxd的值修改为 65535

kernel.pid_maxd=65535

sysctl -p



问题解决,docker ps 显示容器正常

持之以恒

举报

相关推荐

0 条评论