UPDATE 仍在痛苦中...没有找到:( 老实说,我愿意向任何可以帮助我解决这个问题的人捐款,这会让我感到痴迷。
在Proxmox发行版上,我安装了一个安装了Debian的虚拟机。 在这个Debian上:Nginx / PHP5-FPM / APC / Memcached和MySQL正在运行一个大的MAGENTO多网站设置。
有时,(随机或大约上午9点左右)服务器负载正在增加。 在这次偷看中我能看到的是:
大量的MySQL连接数,其中大部分都处于睡眠状态,有一个很大的“时刻”值,如180或有时更多。
服务器内存不满,免费-h告诉我内存不是问题所在。
看起来有一些东西(我会说是一个PHP脚本),它是由cron或访问者(如研究或其他东西)触发的,并且需要花费大量时间来处理,可能会锁定一些MySQL表并阻止其他进程运行,导致大规模冻结。
我正在努力找出造成这个问题的原因,或者只是找到“方法”来有效地调试它。
用HTOP跟踪一些php进程来查找 一些信息。这就是我发现mysql的进程有一些消息,它无法连接到资源,因为它很忙。
在/ var / log / messages和/ var / log / syslog中搜索了相关信息,但没有任何相关内容。
在/ var / log / mysql中搜索了一些错误日志,但一无所获。
在/var/log/php5-fpm.log中搜索并收到许多消息,表明进程在“LONG”一段时间后退出代码3(可能是尝试获取mysql资源并且永远不会获得它?)喜欢:
WARNING: [pool www] child 23839 exited with code 3 after 1123.453563 seconds from start
甚至 :
WARNING: [pool www] child 29452 exited on signal 15 (SIGTERM) after 2471.593537 seconds from start
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处于onDemand模式
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)
感谢您抽出时间阅读本文,如果需要,我会在此处更新内容。
此致 Sorcy
答案 0 :(得分:0)
您是否检查过crontab和Magento中的cronjobs,以确保这不是任何工作?
这种奇怪的服务器行为是否会减慢您的网站速度?我不确定,但这也可能是Slowloris DDos攻击,其中许多HTTP连接打开,因为一个错误没有关闭。也许我给你一个提示。