用戶執行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則是一個真正意義的閥值,超過改值就會報錯。
結束。