runtime/cgo: pthread_create failed: Resource temporarily unavailable

用户执行docker ps后,报错:

$ docker ps

runtime/cgo: pthread_create failed: Resource temporarily unavailable

SIGABRT: abort

PC=0x7efca7dad387 m=0 sigcode=18446744073709551610

goroutine 0 [idle]:

runtime: unknown pc 0x7efca7dad387

stack: frame={sp:0x7ffdbda3a6c8, fp:0x0} stack=[0x7ffdbd23ba98,0x7ffdbda3aad0)

00007ffdbda3a5c8:  000055af6e558e7f <runtime.(*mheap).growAddSpan+271>  00007ffdbda3a600 

00007ffdbda3a5d8:  000055af6e54fe0e <runtime.(*mTreap).end+78>  0000000000000000 

00007ffdbda3a5e8:  00007efc00000001  0000000000000000 

00007ffdbda3a5f8:  00007ffdbda3a630  000055af6e57e7d7 <runtime.step+327> 

00007ffdbda3a608:  000055af708fbdf2  0000000000d08e00 

00007ffdbda3a618:  0000000000d08e00  00007ffdbda3a658 

00007ffdbda3a628:  000055af6e57e7a3 <runtime.step+275>  00007ffdbda3a6d8 

00007ffdbda3a638:  000055af6e57daba <runtime.pcvalue+346>  000055af70918a3f 

......

这里有一行报错是,runtime/cgo: pthread_create failed: Resource temporarily unavailable,

即资源缺乏。

我尝试用limit -u 10000来扩大用户的限制参数,再次执行docker ps后不再报错。

说明这个处理方法是对的,但这是临时的,要想长期保持,需要更改配置文件。

1. 在文件/etc/security/limits.d/20-nproc.conf末尾添加

renyi      soft    nproc     60000

2. 在/etc/security/limits.conf末尾添加

renyi soft nproc 65535

renyi hard nproc 65535

renyi soft nofile 60000

renyi hard nofile 65535

如此,可以永久性的解决资源匮乏问题。

附注:nproc:示意max number of processes
nofile:示意max number of open file descriptors
hard与soft:soft是一个警告值,而hard则是一个真正意义的阀值,超过改值就会报错。

结束。

posted @ 2021-02-22 15:06  巴州夜雨  阅读(6333)  评论(0编辑  收藏  举报