常在河边走,哪有不湿鞋。经历的系统多了,总会遇到各种各样的错误,如果你没有遇到,就证明有人在替你负重前行。
有这样一个经典场景,机器负载并不高,但是系统并发量就是上不去,日志里面还会频繁打出too many open files。见到这样的错误,说明你得对操作系统的ulimit参数进行调整了。ulimit是用来限制进程对资源的使用的(多年前系统的硬件资源远没有现在的强大),系统里面默认值在高流量,大并发的服务器很可能会限制机器硬件性能的发挥。常见的错误很可能是too many open files.
用ulimit -a命令可以查看相关的值。
jenkins@pt-soft1:~$ 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) 63955 max locked memory (kbytes, -l) 16384 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) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 63955 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
ubuntu系统是在/etc/security/limits.conf 最后一行加上
* soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535