Zabbix启动时报错Too many open files in system

今天碰见个这样一个问题,在重启zabbix-agent的时候服务起不来,并且报错

 Starting Zabbix agent: zabbix_agentd [16385]: cannot open "var/log/zabbix/zabbix_agentd.log": [23] Too many open files in system 

这是因为系统打开的文件太多了,可以用ulimit -a查看当前系统文件最大打开数

[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 514314
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 514314
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimitedopen files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 514314
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

可以看到中间有一栏open files只有1024,也就是系统当前最多能打开1024个文件,这太少了,可以通过ulimit -n 131072临时修改当前最大打开文件数为131072个,也可以进入/etc/security/limits.conf中进行永久设置,设置方法为在文件的最后处修改或添加如下

* soft nofile 131072

* hard nofile 131072

设置完后重启zabbix服务,还是不行,继续报错,这个时候用lsof | wc -l命令来查看打开文件数一共是多少

[root@localhost ~]# lsof |wc -l
67948

发现并没有超出设置的最大值,那是怎么回事呢?

原来还有一个文件限制了系统打开的最大文件数

cat /proc/sys/fs/file-max 
65535

将这个文件也修改成131072之后,重启zabbix-agent服务,成功。

但是以上方法只是临时的,要想永久生效,需要修改/etc/sysctl.conf文件,然后在后面加上fs.file-max = 131072然后执行sysctl -p生效。

 

你可能感兴趣的:(linux)