首页 > 其他分享 > runtime/cgo: pthread_create failed: Resource temporarily unavailable or fork: Cannot allocate mem

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

时间:2023-02-14 18:03:03浏览次数:53  
标签:fork kernel temporarily Resource 查看 max pid allocate 进程

出现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_系统进程


通过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_系统进程_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 显示容器正常​

持之以恒

标签:fork,kernel,temporarily,Resource,查看,max,pid,allocate,进程
From: https://blog.51cto.com/u_14045290/6057361

相关文章