Постоянно высокая загрузка ЦП, с одного сайта

У меня есть сервер в DigitalOcean, и он в основном используется для запуска нескольких WP-сайтов с низким трафиком, и 90% сайтов являются работает нормально. НО! один из сайтов постоянно имеет 5-20 (зависит от того, на что я положил максимальное количество детей), и каждый процесс потребляет от 5% до 20% ЦП, насколько это возможно замечено здесь . Так и остается, но я подозреваю, что чем больше пользователей они активнее, тем хуже становится.
Перезапуск php-fpm или любого другого других сервисов не помогает - я просмотрел журнал и не нашел ничего, что, по моему мнению, могло бы вызвать эту проблему.

Я все еще новичок во всей этой проблеме с серверами, и я должен сказать, что я не совсем уверен, что является причиной этого. Но если бы кто-нибудь мог указать мне правильное направление, я был бы признателен!

Небольшая информация:

DigitalOcean Droplet (4gb ram, 2 CPUs)
CentOS 7.3.1611 x64
nginx / php-fpm
Running WP sites (6-7 sites)

PHP-fpm.conf

 listen = 127.0.0.1:9001
 listen.allowed_clients = 127.0.0.1

 user = int
 group = int

 pm = dynamic
 pm.max_children = 10
 pm.start_servers = 3
 pm.min_spare_servers = 2
 pm.max_spare_servers = 10
 pm.max_requests = 300

 env[HOSTNAME] = $HOSTNAME
 env[PATH] = /usr/local/bin:/usr/bin:/bin
 env[TMP] = /tmp
 env[TMPDIR] = /tmp
 env[TEMP] = /tmp

Nginx.conf:

limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:40m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:40m rate=20r/s;

server {
listen      114.242.22.180:80;
server_name int www.int;
root        /home/int/web/int/public_html;
index       index.php index.html index.htm;
access_log  /var/log/nginx/domains/int.log combined;
access_log  /var/log/nginx/domains/int.bytes bytes;
error_log   /var/log/nginx/domains/int.error.log error;


limit_conn conn_limit_per_ip 40;
limit_req zone=req_limit_per_ip burst=40 nodelay;

location = /wp-login.php {
    allow xxx.xxx.xxx.xxx;
    deny all;
}


location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off;
}

location / {
        index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
        expires     max;
    }

     location ~ ^(.+\.php)(.*)$ {
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        if (!-f $document_root$fastcgi_script_name) {
            return  404;
        }
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
        fastcgi_pass    127.0.0.1:9001;
        fastcgi_index   index.php;
        include         /etc/nginx/fastcgi_params;
    }
}

error_page  403 /error/404.html;
error_page  404 /error/404.html;
error_page  500 502 503 504 /error/50x.html;

location /error/ {
    alias   /home/int/web/int/document_errors/;
}

location ~* "/\.(htaccess|htpasswd)$" {
    deny    all;
    return  404;
}

location /vstats/ {
    alias   /home/int/web/int/stats/;
    include /home/int/web/int/stats/auth.conf*;
}

include     /etc/nginx/conf.d/phpmyadmin.inc*;
include     /etc/nginx/conf.d/phppgadmin.inc*;
include     /etc/nginx/conf.d/webmail.inc*;

include     /home/int/conf/web/nginx.int.conf*;
}
1
задан 1 March 2017 в 03:16
1 ответ

Мы видим, что используется процессор, но какой процесс его использует? PHP-FPM? MySQL? NginX? Как часто вы получаете логи в своем файле access.log от NginX? Разве он не постоянный? Если он постоянный, то вы можете быть под DDoS-атакой.

Если все вышесказанное: да. Требуется Cloudflare или Fail2Ban (у меня есть и то, и другое)

.
0
ответ дан 4 December 2019 в 05:08

Теги

Похожие вопросы