Есть VPS 3Gb оперативной 40Gb дист база MariaDB. Работает на NGINX+PHP-FPM 7 Проблема в следующем, сайт работает какое то время нормально шустро, каждый раз по разному, может два дня может 20 минут и потом при заходе на него не грузится и ошибок не пишет, крутится загрузка в браузере как будто ожидает чего то. При этом когда вот так висит по ресурсам оперативы свободной еще 2Gb процессоры не загружены там загрузка на 8-10% место на диске есть, все службы нормально работают и даже при этом демоны свои которые на PHP работают и создают свои процессы которые за 5-10 сек выполняются в фоне все но при заходе с сайта ничего не грузит, уже не знаю в какую сторону смотреть копать Код (Text): [mysqld] performance_schema = off collation-server = utf8_general_ci character-set-server = utf8 local-infile=0 innodb_file_per_table = 1 pid-file = /var/run/mysqld/mysqld.pid datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 #bind-address = 127.0.0.1 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd max_allowed_packet=100M key_buffer_size = 16M innodb_buffer_pool_size = 1524M innodb_flush_log_at_trx_commit = 0 innodb_flush_method = O_DIRECT thread_cache_size = 16M query_cache_size = 0 sort_buffer_size = 4M read_rnd_buffer_size = 512K table_open_cache = 500 query_cache_limit = 4M event-scheduler = OFF max_connections = 100 max_connect_errors = 10000 #interactive_timeout = 100 #wait_timeout = 50 connect_timeout = 10 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d PHP-FPM Код (Text): [rkoffice] pm = dynamic pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 5 pm.max_children = 50 pm.max_requests = 500 pm.process_idle_timeout = 10s php_admin_value[error_reporting] = E_ALL & ~E_NOTICE php_admin_value[display_errors] = stderr php_admin_value[log_errors] = On php_admin_value[mbstring.func_overload] = 0 listen = /var/www/php-fpm/rkoffice.sock listen.mode = 0660 listen.owner = rkoffice listen.group = apache user = rkoffice group = rkoffice chdir = / php_admin_value[upload_tmp_dir] = /var/www/rkoffice/data/mod-tmp php_admin_value[session.save_path] = /var/www/rkoffice/data/mod-tmp NGINX Код (Text): user apache; worker_processes 2; #worker_priority -5; worker_rlimit_nofile 163840; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { use epoll; worker_connections 4000; multi_accept on; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; set_real_ip_from 127.0.0.1; sendfile on; tcp_nopush on; tcp_nodelay on; types_hash_max_size 2048; client_body_buffer_size 4K; client_header_buffer_size 4k; fastcgi_buffers 64 4K; large_client_header_buffers 8 32k; client_body_timeout 10; client_header_timeout 10; keepalive_timeout 10; send_timeout 10; reset_timedout_connection on; server_names_hash_bucket_size 64; server_tokens off; gzip on; gzip_static on; gzip_min_length 1100; gzip_buffers 64 8k; gzip_comp_level 3; gzip_http_version 1.1; gzip_proxied any; gzip_types text/plain application/xml application/x-javascript text/css; proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; fastcgi_send_timeout 600s; fastcgi_read_timeout 600s; server_name_in_redirect off; include /etc/nginx/conf.d/*.conf; include /etc/nginx/vhosts/*/*.conf; server { server_name localhost; disable_symlinks if_not_owner; listen 80; include /etc/nginx/vhosts-includes/*.conf; location @fallback { error_log /dev/null crit; proxy_pass http://127.0.0.1:8080; proxy_redirect http://127.0.0.1:8080 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; access_log off ; client_max_body_size 1024m; client_body_buffer_size 128k; } } client_max_body_size 1024m; } Помогите советом
Нужно смотреть логи и искать причину глюков. Возможно оперативки недостаточно и она просто вся занята спустя промежуток времени. Временно, чтобы сайт продолжал свою работу, предлагаю с какой-то периодичностью просто перезапускать php.
А в каких логах смотрите? И какой уровень логгирования включен? Уверены, что ошибки вообще пишутся? Всего 600 метров от 3 гигов? Мало. Что там происходит такое? Уверены, что сервер не захлебывается в свопе в этот момент?
вот с этого момента я бы начал расследование. чего ждёт, конкретно? --- Добавлено --- включай инспектор, вкладку Network и смотри что за запрос подвисает. затем добавляй отладочную инфу в соответствующий скрипт. --- Добавлено --- звучит довольно очевидно, правда? как правило, причина проблем находится под носом, но мы излишне всё усложняем.
Во всех по php и ngin и mysql Лог по php ALL стоит SWAP в момент зависания 0 --- Добавлено --- Дело в то что все работало отлично пока не обновил php c 5 на 7
Раз нет fast-win решения, предлагаю без ручных проверок сразу локализовать проблему (которых вполне возможно несколько): тс, поставьте триальную версию агента newrelic https://newrelic.com и посмотрите результат мониторинга. Учитывая, что будут анализироваться все пользовательские сессии и писаться долгие транзакции, вы сразу увидите проблему, а также получите детальную трассировку вызовов по каждому запросу в ваше приложение. Обязательно покажите тут результаты если не получится разобраться в отчете самостоятельно: пользовательские параметры как и значения запросов в базы данных отображаться не будут.
чуйка мне подсказывает, увитывая вот это что скрипт тупо обламывается где-то из-за несовместимости. поэтому долгих сессий никаких нет. есть отсутствие нормального ответа на запрос. форс-мажор с которым клиентская сторона не справляется, продолжает крутить свои loader icon. почему не каждый раз? потому что срабатывает какое-то редкое условие, где наступает ахтунг. логи по идее должны содержать ошибку.