最近测试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