我为重复的主题表示歉意。但是我似乎重新阅读了所有可以尝试的内容。
我已经3次遇到以下问题了……
File ".../lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
File ".../lib/python2.7/site-packages/MySQLdb/connections.py", line 193, in __init__
OperationalError: (_mysql_exceptions.OperationalError) (2001, "Can't create UNIX socket (24)")
在最后一种情况之前,我有limits.conf:
* soft nofile 4096
* hard nofile 8192
root soft nofile 4096
root hard nofile 8192
所有用户的ulimit -Sn:4096
发生问题时,我已经检查了服务器:
#lsof -Fn | sort | uniq | wc -l
3181
#lsof -Fn -u appuser | sort | uniq | wc -l
2255
#cat /proc/sys/fs/file-max
783812
然后我按Counting open files per process中的脚本检查每个进程的最大打开文件数:
cd /proc
for pid in [0-9]*
do
echo "PID = $pid with $(ls /proc/$pid/fd/ | wc -l) file descriptors"
done | sort -rn -k5 | head | while read -r _ _ pid _ fdcount _
do
command=$(ps -o cmd -p "$pid" -hc)
printf "pid = %5d with %4d fds: %s\n" "$pid" "$fdcount" "$command"
done
结果(应用程序用户的最大值):1022
我检查了数据库设置:
mysql> SHOW VARIABLES LIKE '%open%' ;
+-------------------+----------+
| Variable_name | Value |
+-------------------+----------+
| have_openssl | DISABLED |
| innodb_open_files | 300 |
| open_files_limit | 50000 |
| table_open_cache | 10240 |
+-------------------+----------+
我想念什么?我应该检查哪些信息以避免将来出现此问题?我仍然需要监视哪些指标?哪些设置仍需要调整? 现在,我仅将所有用户的nofile的软限制更改为65535。但是上次未超过该限制。