处于睡眠状态的高级Mysql连接+运行的大量PHP实例/ Magento

时间:2014-09-01 10:53:08

标签: php mysql magento nginx process

UPDATE 仍在痛苦中...没有找到:( 老实说,我愿意向任何可以帮助我解决这个问题的人捐款,这会让我感到痴迷。

在Proxmox发行版上,我安装了一个安装了Debian的虚拟机。 在这个Debian上:Nginx / PHP5-FPM / APC / Memcached和MySQL正在运行一个大的MAGENTO多网站设置。

有时,(随机或大约上午9点左右)服务器负载正在增加。 在这次偷看中我能看到的是:

  • HTOP中的大量PHP-FPM实例
  • 大量的MySQL连接数,其中大部分都处于睡眠状态,有一个很大的“时刻”值,如180或有时更多。

  • 服务器内存不满,免费-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资源并且永远不会获得它?)喜欢:

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网站的错误文件中搜索并发现多条消息,表明由于我在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处于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

1 个答案:

答案 0 :(得分:0)

您是否检查过crontab和Magento中的cronjobs,以确保这不是任何工作?

这种奇怪的服务器行为是否会减慢您的网站速度?我不确定,但这也可能是Slowloris DDos攻击,其中许多HTTP连接打开,因为一个错误没有关闭。也许我给你一个提示。