最近在觀察到不知道什麼原因,在 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