Cha*_* E. 15 php mysql file-descriptor mariadb
在问这个之前我已经做了很多阅读,所以让我先说我没有用完连接,内存或cpu,而且据我所知,我也没有用完文件描述符.
当MySQL负载很重时,这就是PHP抛出的东西:
无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(11"资源暂时不可用")
这种情况在负载下随机发生 - 但我推的越多,php就越频繁地向我抛出.在发生这种情况时,我总是可以通过控制台本地连接,从PHP到127.0.0.1,而不是使用更快的unix套接字的"localhost".
这里有一些系统变量来清除常见的问题:
cat /proc/sys/fs/file-max = 4895952
lsof | wc -l = 215778 (during "outages")
Run Code Online (Sandbox Code Playgroud)
可用连接的最高使用率:26%(261/1000)
InnoDB缓冲池/数据大小:10.0G/3.7G(足够的房间)
我实际上在运行MariaDB(服务器版本:10.0.17-MariaDB MariaDB Server)
这些结果是在正常负载下生成的,并且通过在非工作时间运行mysqlslap来生成,因此,慢查询不是问题 - 只是高连接.
有什么建议?如有必要,我可以报告其他设置/数据 - mysqltuner.pl说一切都很好
而且,这里显而易见的事情是通过IP连接工作得很好并且在这些中断期间很快 - 我只是无法弄清楚原因.
编辑:这是我的my.ini(从我最近的故障排除更改中看,有些值似乎有点高,请记住,MySQL日志,系统日志或dmesg中没有错误)
socket=/var/lib/mysql/mysql.sock
skip-external-locking
skip-name-resolve
table_open_cache=8092
thread_cache_size=16
back_log=3000
max_connect_errors=10000
interactive_timeout=3600
wait_timeout=600
max_connections=1000
max_allowed_packet=16M
tmp_table_size=64M
max_heap_table_size=64M
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=8M
join_buffer_size=1M
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_buffer_pool_size=10G
[mysql.server]
user=mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open-files-limit=65535
Run Code Online (Sandbox Code Playgroud)
小智 9
最有可能的原因net.core.somaxconn
是它的价值是什么/proc/sys/net/core/somaxconn
net.core.somaxconn
# The maximum number of "backlogged sockets". Default is 128.
Run Code Online (Sandbox Code Playgroud)
队列中尚未连接的连接.该队列上方的任何内容都将被拒绝.在你的情况下,我怀疑这一点.尝试根据您的负载增加它.
以root用户身份运行
echo 1024 > /proc/sys/net/core/somaxconn
Run Code Online (Sandbox Code Playgroud)