使用sysbench測試MySQL最大並發連接,出現上面的錯誤。原因是操作系統對一個進程打開的文件句柄數量有限制,其中包含打開的SOCKET數量。 ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) 4 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 stack size (kbytes, -s) 1024 cpu time (seconds, -t) unlimited max user processes (-u) 7168 virtual memory (kbytes, -v) unlimited 注意上面open files是1024,因此我發現當建立了1024個連接之後就會報錯。 這個值通常不能用ulimit命令來改(除非是在root下測試)。需要修改/etc/security/limits.conf,增加如: gulei hard nofile 16384 gulei soft nofile 16384 最左側是用戶名,即對gulei用戶進程打開文件的限制。 這樣設置以後,如果是用ssh登錄的,可能還無法生效。需要再執行一下su $USER才能生效。 比如: ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) 4 max memory size (kbytes, -m) unlimited ope...