更新 仍然在痛苦中......什么也没找到:( 老实说,我愿意向任何可以帮助我解决这个问题的人捐款,这越来越让人着迷了,哈哈。
在 Proxmox distrib 上,我有一个安装了 Debian 的虚拟机。 在这个 Debian 上:Nginx/PHP5-FPM/APC/Memcached 和 MySQL 正在运行大型 MAGENTO 多网站设置。
有时,(随机或上午 9 点左右取决于)服务器负载增加。 在这次偷看中我能看到的是:
- HTOP 中的大量 PHP-FPM 实例
大量 MySQL 连接,其中大部分处于休眠状态,“时刻”值很大,例如 180 或有时更多。
服务器内存未满,free -h 告诉我内存不是这里的问题。
- 来自访客的 TCP 连接不高,所以我认为流量也不是问题
看起来有些东西(我会说是一个 php 脚本)是由 cron 或访问者触发的(比如研究或其他东西),它需要很多时间来处理,可能会锁定一些MySQL 表并阻止其他进程运行,导致大规模卡住。
我正在努力找出导致此问题的原因,或者只是找到有效调试它的“方法”。
我已经尝试过的:
使用 HTOP 跟踪一些 php 进程以查找 一些信息。这就是我如何发现 mysql 的进程有一些消息表明它无法连接到资源,因为它很忙。
在/var/log/messages 和/var/log/syslog 中搜索信息,但没有找到任何相关信息。
在/var/log/mysql 中搜索了一些错误日志,但一无所获。
在/var/log/php5-fpm.log 中搜索并收到许多消息,表明进程在“LONG”时间段后以代码 3 退出(可能是进程试图获取 mysql 资源但从未获取它?)喜欢:
警告:[pool www] child 23839 在开始 1123.453563 秒后以代码 3 退出
甚至 :
警告:[pool www] child 29452 在开始 2471.593537 秒后退出信号 15 (SIGTERM)
- 在 Nginx 网站的错误文件中搜索,发现多条消息表明由于我在 Nginx 配置文件中设置的 60 秒超时,访问者连接超时。
这是我的设置:
Nginx 网站的配置文件:
location ~ \.php$ {
if (!-e $request_filename) {
rewrite / /index.php last;
}
try_files $uri =404;
expires off;
fastcgi_read_timeout 60s;
fastcgi_index index.php;
fastcgi_split_path_info ^(.*\.php)(/.*)?$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Nginx 主配置文件:
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
fastcgi_read_timeout 60;
client_max_body_size 30M;
PHP-FPM 处于按需模式
default_socket_timeout = 60
mysql.connect_timeout = 60
PHP-FPM 池的配置文件
pm=ondemand
pm.max_children = 500
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.process_idle_timeout = 10s;
pm.process_idle_timeout = 10s;
pm.max_requests = 5000 (was thinking about reducing this value to force processes to respawn, if someone has experience with it, I'm interested in hearing it)
感谢您花时间阅读本文,如果需要,我会在这里更新内容。
问候 魔法
最佳答案
您是否检查了 crontab 和 Magento 中的 cronjobs 以确保这不是任何作业?
这种奇怪的服务器行为是否会降低您网站的速度?我不确定,但这也可能是 Slowloris DDos 攻击,其中打开了许多 HTTP 连接并且由于错误而没有关闭。也许我给了你一个提示。
关于php - 处于休眠状态的高 Mysql 连接 + 大量运行的 PHP 实例/Magento,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25604228/