PHP / MYSQL连接失败在重负载下通过mysql.sock

前端之家收集整理的这篇文章主要介绍了PHP / MYSQL连接失败在重负载下通过mysql.sock前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在提出这一点之前,我已经做了相当多的阅读,所以让我先说说我没有用完连接,记忆,或者cpu,而且从我能说出来,我也没有用完文件描述符.

MySQL处于沉重的负载状态时,这是PHP引发的:

Can’t connect to local MysqL server through socket ‘/var/lib/MysqL/MysqL.sock’ (11 “Resource temporarily unavailable”)

这种情况在负载随机发生 – 但是我推的越多,PHP就越频繁地向我投掷.当这种情况发生时,我可以通过控制台连接本地,从PHP到127.0.0.1,而不是使用更快的unix套接字的“localhost”.

以下是一些系统变量,以消除常见问题:

cat /proc/sys/fs/file-max = 4895952
lsof | wc -l = 215778 (during "outages")

最高使用率:26%(261/1000)

InnoDB缓冲池/数据大小:10.0G / 3.7G(很多o室)

> soft nofile 999999
> hard nofile 999999

我实际上是运行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
很可能是由于net.core.somaxconn
/ proc / sys / net / core / somaxconn的值是多少?
net.core.somaxconn 

# The maximum number of "backlogged sockets".  Default is 128.

尚未连接的队列中的连接.任何超过该队列的内容都将被拒绝.我怀疑你的情况.尝试根据您的负载增加它.

作为root用户运行

echo 1024 > /proc/sys/net/core/somaxconn
原文链接:https://www.f2er.com/php/139573.html

猜你在找的PHP相关文章