我正在嘗試透過單獨的守護程序創建 4000 多個 docker 容器(以避免每個橋 1023 個 veth 的障礙)。但我越來越
bash:fork:無法分配內存
ulimit
錯誤在1800左右。Docker 版本 1.8 RedHat 版本 7
答案1
bash 不使用vfork
且 bash 很大。
這會導致許多分叉消耗大量虛擬記憶體。
這很可能是由系統上的實際記憶體資源引起的問題,而不是由您可以透過 控制的東西引起的ulimit
。
您是否嘗試過使用 Bourne Shell 或 ksh93?兩者都用於vfork()
優化性能。
答案2
問題在於 docker 殭屍行程正在消耗核心行程容量,可以透過增加 kernel.pid_max 來解決問題