在问这个问题之前,我已经完成了很多的阅读工作,所以让我先说我没有用完连接,内存或者cpu,我可以告诉,我也没有用完文件描述符。通过mysql.sock在重负载下的PHP/MYSQL连接失败
这里的PHP抛出什么我当MySQL是在重负载下:
无法通过套接字“/var/lib/mysql/mysql.sock”(11“资源连接到本地MySQL服务器暂时不可用“)
这种情况在负载下随机发生 - 但是我按的越多,php越频繁地向我抛出这个。发生这种情况时,我总是可以通过控制台本地连接,并通过127.0.0.1从PHP连接到本地,而不是使用速度更快的unix套接字的“localhost”。
下面的几个系统变量淘汰的常见问题:
cat /proc/sys/fs/file-max = 4895952
lsof | wc -l = 215778 (during "outages")
可用连接的最高使用率:26%(1000分之261)
InnoDB缓冲池/数据大小:10.0G/3.7G(充足ö室)
- 软NOFILE 999999
- 硬NOFILE 999999
我实际运行MariaDB的(服务器版本:10.0.17-MariaDB的MariaDB的服务器)
这些结果都在正常负载下产生的,并在非工作时间运行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
什么是你的磁盘I/O是怎样的?如果你的瓶颈没有被内存,CPU或连接命中,它最有可能与加载时的磁盘I/O无法跟上.sock相关。你有没有尝试过使用套接字? – user3036342 2015-03-03 10:14:17
在我绝对最糟糕的时候,仍然有0%的iowait(并且html页面服务很好,速度很快,控制台速度很快等,所以不是磁盘IO问题) - 我可以尝试不使用本地套接字 - 但这只会导致网络问题引入一堆更多的加载已经繁忙的服务器的TCP堆栈。我宁愿留在本地套接字的更快和推荐的方法。 – 2015-03-03 10:19:06
它是一个可能的错误。试着改变你的版本 – 2015-03-05 13:27:26