Страница 1 из 1

PHP-FPM и зависание сервера

Добавлено: 2015-01-11 3:39:43
tom.cat
Всем привет и с наступившими праздниками!
Есть некая виртуалка, на ней есть wordpress сайт и форум на phpbb. Все это добро стояло и работало до последних дней. Не понятно с чего сайт стал адски тупить, а то и вообще уходить в даун. Помотрел top, там:

Код: Выделить всё

last pid: 65718;  load averages:  0.55,  0.51,  0.75                            up 0+11:21:56  06:00:48
78 processes:  1 running, 77 sleeping
CPU:  0.0% user,  0.0% nice,  4.1% system,  9.0% interrupt, 86.8% idle
Mem: 615M Active, 84M Inact, 277M Wired, 2816K Cache, 111M Buf, 2712K Free
Swap: 3072M Total, 978M Used, 2094M Free, 31% Inuse, 4K In, 14M Out

  PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME    WCPU COMMAND
65556 mysql        52  20    0   715M   105M select   0:33   0.00% mysqld
62089 user    1  20    0 78644K   932K select   0:08   0.00% sshd
62070 user    1  20    0 78644K   968K select   0:04   0.00% sshd
1500 root      1  20    0 14240K   632K kqread   0:02   0.00% dovecot
65680 www  1  20    0   480M 28924K pfault   0:02   0.00% php-fpm
65682 www  1  20    0   376M 24896K pfault   0:02   0.00% php-fpm
64603 www  1  20    0   101M  1236K kqread   0:02   0.00% nginx
65686 www  1  20    0   376M  9728K select   0:02   0.00% php-fpm
65681 www  1  20    0   380M 22444K select   0:02   0.00% php-fpm
65685 www  1  20    0   376M  5380K select   0:02   0.00% php-fpm
65696 www  1  20    0   480M  2084K pfault   0:01   0.00% php-fpm
  635 _pflogd 1  20    0 12284K   212K bpf      0:01   0.00% pflogd
65695 www  1  20    0   480M  1840K pfault   0:01   0.00% php-fpm
65697 www  1  20    0   480M   640K select   0:01   0.00% php-fpm
65690 www  1  20    0   484M 24016K pfault   0:01   0.00% php-fpm
65691 www      1  20    0   480M 20452K pfault   0:01   0.00% php-fpm
64602 www      1  20    0   101M   996K pfault   0:01   0.00% nginx
65684 www      1  20    0   460M 25108K pfault   0:01   0.00% php-fpm
  835 root          1  20    0 66912K   860K select   0:01   0.00% proftpd
 1503 root          1  20    0 36232K   364K kqread   0:01   0.00% dovecot-auth
65683 www      1  20    0   420M 25832K pfault   0:00   0.00% php-fpm
  738 root          1  20    0 12088K   612K select   0:00   0.00% syslogd
65692 www      1  20    0   464M   110M select   0:00   0.00% php-fpm
65709 www      1  21    0   464M   118M select   0:00   0.00% php-fpm
65712 www      1  20    0   464M   118M pfault   0:00   0.00% php-fpm
65708 www      1  20    0   464M   118M select   0:00   0.00% php-fpm
65687 www      1  20    0   376M 18868K pfault   0:00   0.00% php-fpm
При этом по ssh система вообще мертвая, отлик наверно происходит через минуту после подачи команды. В логах php-fpm такое:

Код: Выделить всё

[11-Jan-2015 05:45:37] WARNING: [pool www] child 65622, script '/usr/local/www/apache24/data/forum.server.info/index.php' (request: "GET /index.php") executing too slow (6.457785 sec), logging
[11-Jan-2015 05:45:37] WARNING: [pool www] child 65620, script '/usr/local/www/apache24/data/server.info/index.php' (request: "GET /index.php") executing too slow (5.253016 sec), logging
[11-Jan-2015 05:45:37] NOTICE: child 65622 stopped for tracing
[11-Jan-2015 05:45:37] NOTICE: about to trace 65622
[11-Jan-2015 05:45:37] ERROR: failed to ptrace(PT_IO) pid 65622: Bad address (14)
[11-Jan-2015 05:45:37] NOTICE: finished trace of 65622
[11-Jan-2015 05:45:37] NOTICE: child 65620 stopped for tracing
[11-Jan-2015 05:45:37] NOTICE: about to trace 65620
[11-Jan-2015 05:45:37] ERROR: failed to ptrace(PT_IO) pid 65620: Bad address (14)
[11-Jan-2015 05:45:37] NOTICE: finished trace of 65620
[11-Jan-2015 05:45:39] WARNING: [pool www] child 65624, script '/usr/local/www/apache24/data/server.info/wp-cron.php' (request: "POST /wp-cron.php") executing too slow (6.947353 sec), logging
[11-Jan-2015 05:45:39] NOTICE: child 65624 stopped for tracing
[11-Jan-2015 05:45:39] NOTICE: about to trace 65624
[11-Jan-2015 05:45:45] ERROR: failed to ptrace(PT_IO) pid 65624: Bad address (14)
[11-Jan-2015 05:45:45] NOTICE: finished trace of 65624
[11-Jan-2015 05:45:49] WARNING: [pool www] child 65628, script '/usr/local/www/apache24/data/server.info/index.php' (request: "GET /index.php") executing too slow (12.146980 sec), logging
[11-Jan-2015 05:45:49] WARNING: [pool www] child 65627, script '/usr/local/www/apache24/data/server.info/index.php' (request: "GET /index.php") executing too slow (8.608700 sec), logging
[11-Jan-2015 05:45:49] WARNING: [pool www] child 65626, script '/usr/local/www/apache24/data/server.info/index.php' (request: "GET /index.php") executing too slow (14.077189 sec), logging
[11-Jan-2015 05:45:49] WARNING: [pool www] child 65625, script '/usr/local/www/apache24/data/server.info/index.php' (request: "GET /index.php") executing too slow (14.641975 sec), logging
[11-Jan-2015 05:45:49] WARNING: [pool www] child 65623, script '/usr/local/www/apache24/data/forum.server.info/index.php' (request: "HEAD /index.php") executing too slow (13.075876 sec), logging
[11-Jan-2015 05:45:49] NOTICE: child 65628 stopped for tracing
[11-Jan-2015 05:45:49] NOTICE: about to trace 65628
[11-Jan-2015 05:45:49] ERROR: failed to ptrace(PT_IO) pid 65628: Bad address (14)
[11-Jan-2015 05:45:49] NOTICE: finished trace of 65628
[11-Jan-2015 05:45:49] NOTICE: child 65627 stopped for tracing
[11-Jan-2015 05:45:49] NOTICE: about to trace 65627
[11-Jan-2015 05:45:49] ERROR: failed to ptrace(PT_IO) pid 65627: Bad address (14)
[11-Jan-2015 05:45:49] NOTICE: finished trace of 65627
[11-Jan-2015 05:45:49] NOTICE: child 65626 stopped for tracing
[11-Jan-2015 05:45:49] NOTICE: about to trace 65626
[11-Jan-2015 05:45:49] ERROR: failed to ptrace(PT_IO) pid 65626: Bad address (14)
[11-Jan-2015 05:45:49] NOTICE: finished trace of 65626
[11-Jan-2015 05:45:49] NOTICE: child 65625 stopped for tracing
[11-Jan-2015 05:45:49] NOTICE: about to trace 65625
[11-Jan-2015 05:45:49] ERROR: failed to ptrace(PT_IO) pid 65625: Bad address (14)
[11-Jan-2015 05:45:49] NOTICE: finished trace of 65625
[11-Jan-2015 05:45:49] NOTICE: child 65623 stopped for tracing
[11-Jan-2015 05:45:49] NOTICE: about to trace 65623
[11-Jan-2015 05:45:49] NOTICE: finished trace of 65623
После перезапуска php-fpm, сайтик работает около нескольких минут и отправляется в даун. Притом каких-то изменений в коде сайта сделано не было.
Отключил плагины, которые не использовал.
Думал, что ддосят. Статистика nginx в среднем показывает следующее:

Код: Выделить всё

Active connections: 23 
server accepts handled requests
 80 80 309 
Reading: 0 Writing: 2 Waiting: 21 
Активных соединений выше 50 не было. На всякий случай прописал в конфиг nginx некоторые настройки от ддоса:

Код: Выделить всё

limit_req_zone $binary_remote_addr zone=site:10m  rate=2r/s;
И добавил в директиву для сайта:

Код: Выделить всё

limit_req       zone=site  burst=4;
Не спасло, количество соединений стало обрубать при попытке коннекта больше нужного.
Собственно конфиг php-fpm:

Код: Выделить всё

[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
;syslog.facility = daemon
;syslog.ident = php-fpm
log_level = notice
;emergency_restart_threshold = 0
;emergency_restart_interval = 0
;process_control_timeout = 0
;process.max = 128
;process.priority = -19
daemonize = yes
;rlimit_files = 1024
;rlimit_core = 0
events.mechanism = kqueue
;systemd_interval = 10
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
[www]
;prefix = /path/to/pools/$pool
user = server
group = server
listen = /tmp/php-fpm.sock
;listen.backlog = 128
listen.owner = server
listen.group = server
listen.mode = 0666
;listen.allowed_clients = 127.0.0.1
; priority = -19
pm = dynamic
pm.max_children = 30
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
;pm.process_idle_timeout = 10s;
pm.max_requests = 50
;pm.status_path = /status
;ping.path = /ping
;ping.response = pong
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
slowlog = /var/log/$pool.log.slow
request_slowlog_timeout = 5s
;request_terminate_timeout = 0
;rlimit_files = 1024
;rlimit_core = 0
;chroot =
;chdir = /var/www
;catch_workers_output = yes
;security.limit_extensions = .php .php3 .php4 .php5
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
Журнальчик http://www.log.slow

Код: Выделить всё

root@server:/usr/home/user # tail -f /var/log/www.log.slow
[0x0000000802443428] require_wp_db() /usr/local/www/apache24/data/server.info/wp-settings.php:79
[0x0000000802443030] +++ dump failed

[11-Jan-2015 06:17:20]  [pool www] pid 1447
script_filename = /usr/local/www/apache24/data/server.info/wp-cron.php
[0x0000000802448158] mysql_connect() /usr/local/www/apache24/data/server.info/wp-includes/wp-db.php:1418
[0x0000000802447c70] db_connect() /usr/local/www/apache24/data/server.info/wp-includes/wp-db.php:612
[0x0000000802447908] __construct() /usr/local/www/apache24/data/server.info/wp-includes/load.php:352
[0x0000000802443b08] require_wp_db() /usr/local/www/apache24/data/server.info/wp-settings.php:79
[0x0000000802443710] +++ dump failed
Еще было включено журналирвоание медленных логов мускула. Размер разросся до невероятия:

Код: Выделить всё

# ll -h /var/db/mysql/slow.log
-rw-rw----  1 mysql  mysql   849M Jan 11 05:34 /var/db/mysql/slow.log
Часть содержимого:

Код: Выделить всё

# Time: 150111  1:14:51
# User@Host: server[server] @ localhost []  Id:   978
# Query_time: 59.620983  Lock_time: 0.067413 Rows_sent: 0  Rows_examined: 1
SET timestamp=1420917291;
UPDATE `wp_options` SET `option_value` = 'a:28889:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877947;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877948;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877958;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877964;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877974;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877988;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877989;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877991;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878003;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878006;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878015;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878017;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878018;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878019;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878022;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878023;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\"
Ну и my.cnf:

Код: Выделить всё

[client]
character_set_client=utf8
#password = your_password
#port = 3306
socket = /tmp/mysql.sock
[mysqld]
skip-networking
character-set-server=utf8
init-connect="SET NAMES utf8"
long_query_time=5
#slow_query_log=1
#slow_query_log_file=/var/db/mysql/slow.log
#port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
query_cache_size=64M
max_allowed_packet = 128M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
innodb_flush_log_at_trx_commit=2
skip-innodb_doublewrite
server-id = 1
[mysqldump]
quick
max_allowed_packet = 128M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout
И на чем работает вся эта штука:

Код: Выделить всё

root@server:/usr/home/user # uname -srm
FreeBSD 9.3-RELEASE-p6 amd64
root@server:/usr/home/user # php -v
PHP 5.4.36 (cli) (built: Jan  6 2015 20:16:41)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
root@server:/usr/home/user # php -m
[PHP Modules]
apc
bcmath
bz2
calendar
Core
ctype
date
dom
ereg
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
ldap
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
openssl
pcre
PDFlib
PDO
pdo_mysql
pdo_sqlite
Phar
posix
pspell
Reflection
session
SimpleXML
snmp
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib

[Zend Modules]
Кто-нить встречался с подобной проблемой?

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-11 13:44:09
tom.cat
Процессы мускула:

Код: Выделить всё

mysql> SHOW PROCESSLIST;
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id   | User     | Host      | db       | Command | Time | State        | Info                                                                                                 |
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 1282 | root     | localhost | NULL     | Query   |    1 | init         | SHOW PROCESSLIST                                                                                     |
| 2328 | server | localhost | server | Sleep   |  493 |              | NULL                                                                                                 |
| 2404 | server | localhost | server | Query   |   26 | init         | NULL                                                                                                 |
| 2406 | server | localhost | server | Query   |   34 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2407 | server | localhost | server | Query   |    9 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2414 | server | localhost | server | Query   |  113 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2415 | server | localhost | server | Query   |   98 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2416 | server | localhost | server | Query   |   43 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2417 | server | localhost | server | Query   |   96 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2418 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2419 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2420 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2421 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2422 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2423 | server | localhost | server | Query   |   82 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2424 | server | localhost | server | Query   |   49 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2425 | server | localhost | server | Query   |   49 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2426 | server | localhost | server | Query   |   43 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2427 | server | localhost | server | Query   |   43 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2428 | server | localhost | server | Query   |   42 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2429 | server | localhost | server | Query   |   42 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2431 | server | localhost | server | Query   |   41 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2432 | server | localhost | server | Query   |   39 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2433 | server | localhost | server | Query   |   36 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2434 | server | localhost | server | Query   |    1 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2435 | server | localhost | server | Query   |    1 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
26 rows in set (2.02 sec)

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-11 18:07:51
PYO
Памяти ёк. Со swap только и работает.

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-11 18:25:56
PYO
Как вариант:
установить pm.max_children = 16 например.
У меня так 2.5 года работает:

Код: Выделить всё

last pid: 66048;  load averages:  0.00,  0.02,  0.00   up 82+16:24:32  18:25:31
35 processes:  1 running, 34 sleeping
CPU:  0.4% user,  0.0% nice,  0.0% system,  0.0% interrupt, 99.6% idle
Mem: 179M Active, 163M Inact, 96M Wired, 19M Cache, 65M Buf, 25M Free
Swap: 1024M Total, 12M Used, 1012M Free, 1% Inuse
Username to show (+ for all): 
  PID USERNAME   THR PRI NICE   SIZE    RES STATE    TIME    WCPU COMMAND
90137 mysql       29  20    0   229M   105M uwait   84:03   0.00% mysqld
69766 www          1  20    0 12000K  4832K kqread   7:31   0.00% nginx
63509 www          1  31    0 68968K 32088K accept   4:32   0.00% php-fpm
69803 mailnull     2  20    0 52104K  8464K uwait    3:43   0.00% dbmail-pop3d
  548 pgsql        1  20    0 80200K  3992K select   3:42   0.00% postgres
  549 pgsql        1  20    0 44152K  3364K select   3:35   0.00% postgres
  543 pgsql        1  20    0 80200K  3660K select   2:36   0.00% postgres
56472 www          1  26    0 68584K 31880K accept   1:55   0.00% php-fpm
11932 root         6  20    0 14480K  3340K uwait    1:37   0.00% sid-filter
61954 www          1  52    0 69096K 18488K accept   1:29   0.00% php-fpm
  446 root         1   1    0  9552K  1112K select   1:14   0.00% syslogd
  546 pgsql        1  20    0 80200K  3628K select   0:53   0.00% postgres
  547 pgsql        1  20    0 80200K  4560K select   0:45   0.00% postgres
 1257 root         1  20    0  9612K  1224K select   0:25   0.00% inetd
78471 root         1  20    0 11260K  2904K select   0:16   0.00% ntpd
 1240 root         1  20    0  9596K   452K nanslp   0:15   0.00% cron
83554 root         1  20    0 52068K 11168K kqread   0:14   0.00% php-fpm

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-11 22:47:11
tom.cat
Поставил это значение, не помогло.
Решил помотреть, что происходит с диском. И тут выяснилось следующее:

Код: Выделить всё

$ iostat -d -n5 5
            ada0              cd0            pass0            pass1
  KB/t tps  MB/s   KB/t tps  MB/s   KB/t tps  MB/s   KB/t tps  MB/s
 27.65 176  4.77   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 23.58 162  3.72   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 39.23 193  7.39   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 55.20 162  8.74   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 56.41 198 10.93   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 46.27 115  5.20   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 21.72 164  3.48   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 27.56 167  4.51   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 27.75 150  4.07   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 34.49 142  4.79   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 42.74 157  6.54   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 44.72 144  6.28   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
 38.12 130  4.83   0.00   0  0.00   0.00   0  0.00   0.00   0  0.00
Кстати, даже после рестарта php-fpm сайт открывается очень медленно. Сейчас перегрузил php-fpm, и вот что выдает при генерации index.php:

Код: Выделить всё

Статистика: 16.53MB | MySQL:68 | 35,642sec

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-11 23:12:07
PYO
PYO писал(а):Памяти ёк. Со swap только и работает.
настраивать MySQL под существующие скрипты, использовать памяти не больше чем есть, и всё будет хорошо.

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-12 9:49:59
tom.cat
PYO писал(а):
PYO писал(а):Памяти ёк. Со swap только и работает.
настраивать MySQL под существующие скрипты, использовать памяти не больше чем есть, и всё будет хорошо.
Так в том то и дело до последнего времени работало все нормально. Конфиг мускула допотопный, настраивался год назад.
Как его можно оптимизировать?

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-12 18:56:35
PYO
Вот перловый скрипт:
https://github.com/major/MySQLTuner-per ... qltuner.pl
Возможно база подросла и уже не влезает в память...

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-13 10:35:01
tom.cat
Протестировал.

Код: Выделить всё

 >>  MySQLTuner 1.3.0 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
[[0;32mOK[0m] Currently running supported MySQL version 5.6.22
[[0;32mOK[0m] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[[0;34m--[0m] Status: [0;32m+ARCHIVE [0m[0;32m+BLACKHOLE [0m[0;32m+CSV [0m[0;31m-FEDERATED [0m[0;32m+InnoDB [0m[0;32m+MRG_MYISAM [0m
[[0;34m--[0m] Data in MyISAM tables: 17M (Tables: 4)
[[0;34m--[0m] Data in InnoDB tables: 91M (Tables: 331)
[[0;34m--[0m] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 52)
[[0;31m!![0m] Total fragmented tables: 12

-------- Security Recommendations  -------------------------------------------
[[0;32mOK[0m] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[[0;34m--[0m] Up for: 6h 9m 14s (112K q [5.067 qps], 4K conn, TX: 6B, RX: 6B)
[[0;34m--[0m] Reads / Writes: 83% / 17%
[[0;34m--[0m] Total buffers: 240.0M global + 1.8M per thread (151 max threads)
[[0;32mOK[0m] Maximum possible memory usage: 504.2M (49% of installed RAM)
[[0;32mOK[0m] Slow queries: 0% (374/112K)
[[0;32mOK[0m] Highest usage of available connections: 7% (11/151)
[[0;32mOK[0m] Key buffer size / total MyISAM indexes: 16.0M/1.4M
[[0;31m!![0m] Key buffer hit rate: 0.5% (1K cached / 1K reads)
[[0;32mOK[0m] Query cache efficiency: 43.6% (34K cached / 78K selects)
[[0;32mOK[0m] Query cache prunes per day: 0
[[0;32mOK[0m] Sorts requiring temporary tables: 0% (0 temp sorts / 1K sorts)
[[0;32mOK[0m] Temporary tables created on disk: 14% (932 on disk / 6K total)
[[0;32mOK[0m] Thread cache hit rate: 99% (11 created / 4K connections)
[[0;31m!![0m] Table cache hit rate: 2% (64 open / 2K opened)
[[0;32mOK[0m] Open file limit used: 0% (0/29K)
[[0;32mOK[0m] Table locks acquired immediately: 99% (52K immediate / 52K locks)
[[0;32mOK[0m] InnoDB buffer pool / data size: 128.0M/91.6M
[[0;31m!![0m] InnoDB log waits: 1
-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    MySQL started within last 24 hours - recommendations may be inaccurate
    Increase table_cache gradually to avoid file descriptor limits
    Read this before increasing table_cache over 64: http://bit.ly/1mi7c4C
Variables to adjust:
    table_cache (> 64)
    innodb_log_buffer_size (>= 8M)
Значение table_cache = 64. Не понятно на сколько его увеличить? Памяти на виртуалке 1гиг. Оптимизацию провел для всех таблиц.

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-14 0:28:25
tom.cat

Код: Выделить всё

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 3985254 bytes) in /usr/local/www/apache24/data/server/wp-includes/functions.php on line 377
Попробовал через апач. Теперь php мало памяти. Какая-то вакханалия с железом.

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-14 1:44:44
PYO
Да, дело было не в бобине, практически... Исходя из этого:

Код: Выделить всё

    # Time: 150111  1:14:51
    # User@Host: server[server] @ localhost []  Id:   978
    # Query_time: 59.620983  Lock_time: 0.067413 Rows_sent: 0  Rows_examined: 1
    SET timestamp=1420917291;
    UPDATE `wp_options` SET `option_value` = 'a:28889:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877947;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877948;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877958;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877964;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877974;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877988;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877989;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419877991;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878003;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878006;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878015;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878017;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878018;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878019;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878022;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\";a:0:{}}}}i:1419878023;a:1:{s:12:\"my_new_event\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:2:{s:8:\"schedule\";b:0;s:4:\"args\"
и

Код: Выделить всё

mysql> SHOW PROCESSLIST;
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| Id   | User     | Host      | db       | Command | Time | State        | Info                                                                                                 |
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
| 1282 | root     | localhost | NULL     | Query   |    1 | init         | SHOW PROCESSLIST                                                                                     |
| 2328 | server | localhost | server | Sleep   |  493 |              | NULL                                                                                                 |
| 2404 | server | localhost | server | Query   |   26 | init         | NULL                                                                                                 |
| 2406 | server | localhost | server | Query   |   34 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2407 | server | localhost | server | Query   |    9 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2414 | server | localhost | server | Query   |  113 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2415 | server | localhost | server | Query   |   98 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2416 | server | localhost | server | Query   |   43 | updating     | UPDATE `wp_options` SET `option_value` = 'a:30057:{i:1419877932;a:1:{s:12:\"my_new_event\";a:1:{s:32 |
| 2417 | server | localhost | server | Query   |   96 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2418 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2419 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2420 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2421 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2422 | server | localhost | server | Query   |   97 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2423 | server | localhost | server | Query   |   82 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2424 | server | localhost | server | Query   |   49 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2425 | server | localhost | server | Query   |   49 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2426 | server | localhost | server | Query   |   43 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2427 | server | localhost | server | Query   |   43 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2428 | server | localhost | server | Query   |   42 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2429 | server | localhost | server | Query   |   42 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2431 | server | localhost | server | Query   |   41 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2432 | server | localhost | server | Query   |   39 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2433 | server | localhost | server | Query   |   36 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2434 | server | localhost | server | Query   |    1 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
| 2435 | server | localhost | server | Query   |    1 | Sending data | SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'                              |
+------+----------+-----------+----------+---------+------+--------------+------------------------------------------------------------------------------------------------------+
26 rows in set (2.02 sec)
Проблема, видимо, из-за какого-то расширения wrodpress, а именно:
- что-то связанное с schedule
- запись не маленького массива значений, каждый раз при генерации страницы - из первого лога массив из 28889 значений, из последнего - 30057, т.е. размер увеличивается.
MySQL вроде нормально настроен, судя по скрипту.

Re: PHP-FPM и зависание сервера

Добавлено: 2015-01-16 10:23:11
tom.cat
Да, все верно. Проблема была в плагине и глюке темы, которая генерила тонны задач в кроне, из-за чего было адское зависание сайта. Плагин снес проблемный, а для шаблона в файл functions.php добавил следующее:

Код: Выделить всё

add_action("init", "remove_cron_job"); 
function remove_cron_job() {
wp_clear_scheduled_hook("my_new_event"); 
}
Вопрос решен