最近測試golang編寫的server,發現併發數增加時候常常報錯:
http: Accept error: accept tcp [::]:18888: accept4: too many open files; retrying in 1s
檢查全局limit限制發現已經修改
[root@onlyellow2 ~]# ulimit -a
.....
open files (-n) 88888
.....
systemctl重啓server後,查看實時limit
cat /proc/${server_pid}/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
...
Max open files 1024 1024 files
...
發現max open files依然被限制在1024
查詢資料後確定原因:
systemctl啓動的服務,會使用systemd配置文件內的limit參數
故修改方法有兩種:
1. 修改systemd全局limit
/etc/systemd/system.conf
2. 修改單個服務limit
[Service]
...
LimitNOFILE=88888
LimitNPROC=88888