xInOrK
Новичок
Проверил это поведение на FreeBSD 7.2 и на Debian Squeeze с одинаковой версией PHP.
Имеется Nginx + PHP-FPM с очень простой настройкой, особо не заметил чтобы уменьшение или увеличение параметров что либо меняло.
Очень простенький конфиг NGINX c таким блоком для php файлов:
На этом же сервере в ~/.ssh/config прописываю вот такое:
На нём же подключаюсь из консоли к удалённому серверу по SSH:
теперь могу выполнять команды не вводя пароль: ssh server1000 whoami
теперь к странному поведению, создаю простой скрипт на PHP:
Захожу по HTTP на него и жду, проходит примерно 100 секунд, при этом слежу за нагрузкой на сервере она в норме скачков никаких нету, всё впорядке, но как только в браузере появляется результат, мастер процесс php-fpm сжирает почти весь CPU и так висит, как долго не знаю ждал часа два ничего не поменялось. В php-fpm.log -е в этот момент происходит такое:
Строчки "exited with code 0 after" и "started" не прекращаются, тоесть лог растёт и растёт, при этом скрипт уже давно остановился и вывел результат в браузер и даже не трогая его эти строчки бегут и бегут.
Амперсанд в команде "ssh [email protected] ls -la &" для того чтобы он выполнил её на фоне меняет всю ситуацию такого глюка не наблюдается но мне хотелось бы получить результат выполнения команды в некоторых случаях.
А да на FreeBSD наблюдается при этом появление процессов <defunct>
Имеется Nginx + PHP-FPM с очень простой настройкой, особо не заметил чтобы уменьшение или увеличение параметров что либо меняло.
PHP:
PHP 5.3.23 with Suhosin-Patch (cli) (built: Mar 26 2013 14:07:09)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies
PHP:
[storage]
listen = /tmp/fpm_storage.sock
listen.owner = storage
listen.group = storage
listen.mode = 0666
user = storage
group = storage
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 35
PHP:
location ~ \.php$ {
fastcgi_pass unix:/tmp/fpm_storage.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param DEVENV on;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
PHP:
Host *
ConnectTimeout 2
TCPKeepAlive yes
Port 22
Identityfile ~/.ssh/server1000
ControlMaster no
ControlPath ~/.ssh/master-%r@%h:%p
Host server1000
Hostname 192.168.2.2
PHP:
# ssh -o "ServerAliveInterval 15" -o "ServerAliveCountMax 1" -MN user@server1000
# ls -la ~/.ssh/
srw------- 1 storage storage 0 Mar 26 15:46 [email protected]:22
теперь к странному поведению, создаю простой скрипт на PHP:
PHP:
<?php
for ($i = 0; $i < 100; ++$i) {
echo exec("ssh [email protected] ls -la");
}
?>
PHP:
[26-Mar-2013 15:57:00] NOTICE: configuration file /etc/php5/fpm/php-fpm.conf test is successful
[26-Mar-2013 15:57:00] NOTICE: fpm is running, pid 20053
[26-Mar-2013 15:57:00] NOTICE: ready to handle connections
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20054 exited with code 0 after 92.745193 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20324 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20324 exited with code 0 after 0.005245 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20325 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20325 exited with code 0 after 0.005121 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20326 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20326 exited with code 0 after 0.005202 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20327 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20327 exited with code 0 after 0.005543 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20328 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20328 exited with code 0 after 0.004935 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20329 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20329 exited with code 0 after 0.005255 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20330 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20330 exited with code 0 after 0.005239 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20331 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20331 exited with code 0 after 0.005134 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20332 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20332 exited with code 0 after 0.005162 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20333 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20333 exited with code 0 after 0.004950 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20334 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20334 exited with code 0 after 0.005066 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20335 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20335 exited with code 0 after 0.004850 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20336 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20336 exited with code 0 after 0.005501 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20337 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20337 exited with code 0 after 0.005534 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20338 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20338 exited with code 0 after 0.005527 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20339 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20339 exited with code 0 after 0.005508 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20340 started
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20340 exited with code 0 after 0.005976 seconds from start
[26-Mar-2013 15:58:33] NOTICE: [pool storage] child 20341 started
Амперсанд в команде "ssh [email protected] ls -la &" для того чтобы он выполнил её на фоне меняет всю ситуацию такого глюка не наблюдается но мне хотелось бы получить результат выполнения команды в некоторых случаях.
А да на FreeBSD наблюдается при этом появление процессов <defunct>