Docker Engine Max Open files

最近在觀察到不知道什麼原因,在 Centos7 安裝 docker engine,Docker Engine 的 Max Open files 最多只有 65536,當在高併發的環境下,這個數值是遠遠不夠的,所以這邊手動調整一下設定。

1. 首先,如何觀察當前 docker engine 的 max open files 數值是多少?

獲取 docker engine 的 PID

systemctl status docker  

查詢

root$ cat /proc/${pid}/limits  
Limit                     Soft Limit           Hard Limit           Units  
Max cpu time              unlimited            unlimited            seconds  
Max file size             unlimited            unlimited            bytes  
Max data size             unlimited            unlimited            bytes  
Max stack size            8388608              unlimited            bytes  
Max core file size        unlimited            unlimited            bytes  
Max resident set          unlimited            unlimited            bytes  
Max processes             unlimited            unlimited            processes  
Max open files            65535                65535                files  
Max locked memory         unlimited            unlimited            bytes  
Max address space         unlimited            unlimited            bytes  
Max file locks            unlimited            unlimited            locks  
Max pending signals       7277                 7277                 signals  
Max msgqueue size         819200               819200               bytes  
Max nice priority         0                    0  
Max realtime priority     0                    0  
Max realtime timeout      unlimited            unlimited            us  
2. 因為 docker engine 是透過 systemd 來啟動的,為了不想以後升級 docker engine,都需要修改一次 docker.service unit file, 我們打算建立一個新的 docker unit file, 讓這個 unit file 可以覆蓋原本的值,我們將這個 file 放到 /etc/systemd/system/docker.service.d/override.conf
[Service]
LimitNOFILE=1000000  
LimitMEMLOCK=infinity  
3. 重啟 docker engine
systemctl daemon-reload  
systemctl restart docker