Welcome! Log In Create A New Profile

Advanced

Проблема в php-fpm или в nginx

Posted by valet 
Проблема в php-fpm или в nginx
May 15, 2011 11:43AM
Система Debian 6.
Подключил репозиторий дотдеба:
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

Установил nginx 1.0.1
Установил PHP Version 5.3.6-6~dotdeb.1

Но кажется с php-fpm проблемы: дикие тормоза, страницы генерируются по 16 сек, в лог /var/log/php5-fpm.log пишется:
tail /var/log/php5-fpm.log
[15-May-2011 00:48:32] NOTICE: fpm is running, pid 19703
[15-May-2011 00:48:32] NOTICE: ready to handle connections
[15-May-2011 00:49:16] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 8 children, there are 3 idle, and 47 total children
[15-May-2011 00:49:17] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 16 children, there are 9 idle, and 54 total children
[15-May-2011 00:49:18] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 9 idle, and 55 total children
[15-May-2011 00:49:19] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 7 idle, and 56 total children
[15-May-2011 00:49:20] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 9 idle, and 59 total children
[15-May-2011 00:49:21] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 9 idle, and 60 total children
[15-May-2011 00:49:22] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 8 idle, and 61 total children
[15-May-2011 00:49:23] WARNING: [pool www] seems busy (you may need to increase start_servers, or min/max_spare_servers), spawning 32 children, there are 9 idle, and 63 total children

Пробовал увеличивать в /etc/php5/fpm/pool.d/www.conf
pm.max_children = 200
pm.start_servers = 40
pm.min_spare_servers = 10
pm.max_spare_servers = 70
pm.max_requests = 500
Не помогло - растут только соответствующие цифры в логе.

Помогите разобраться в проблеме.
А что на сервере - какой авераж, кто в топе?

On May 15, 6:43 pm, "valet" <nginx-fo...@nginx.us> wrote:
> Система Debian 6.
> Подключил репозиторий дотдеба:
> debhttp://packages.dotdeb.orgstable all
> deb-srchttp://packages.dotdeb.orgstable all
>
> Установил nginx 1.0.1
> Установил PHP Version 5.3.6-6~dotdeb.1
>
> Но кажется с php-fpm проблемы: дикие
> тормоза, страницы генерируются по 16
> сек, в лог /var/log/php5-fpm.log пишется:
> tail /var/log/php5-fpm.log
> [15-May-2011 00:48:32] NOTICE: fpm is running, pid 19703
> [15-May-2011 00:48:32] NOTICE: ready to handle connections
> [15-May-2011 00:49:16] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 8 children,
> there are 3 idle, and 47 total children
> [15-May-2011 00:49:17] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 16 children,
> there are 9 idle, and 54 total children
> [15-May-2011 00:49:18] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 55 total children
> [15-May-2011 00:49:19] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 7 idle, and 56 total children
> [15-May-2011 00:49:20] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 59 total children
> [15-May-2011 00:49:21] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 60 total children
> [15-May-2011 00:49:22] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 8 idle, and 61 total children
> [15-May-2011 00:49:23] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 63 total children
>
> Пробовал увеличивать в
> /etc/php5/fpm/pool.d/www.conf
> pm.max_children = 200
> pm.start_servers = 40
> pm.min_spare_servers = 10
> pm.max_spare_servers = 70
> pm.max_requests = 500
> Не помогло - растут только
> соответствующие цифры в логе.
>
> Помогите разобраться в проблеме.
>
> Posted at Nginx Forum:http://forum.nginx.org/read.php?25,198241,198241#msg-198241
Vitaliy Okulov
Re: Проблема в php-fpm или в nginx
May 16, 2011 01:12PM
C DNS все нормально?

15 мая 2011 г. 19:43 пользователь valet <nginx-forum@nginx.us> написал:

> Система Debian 6.
> Подключил репозиторий дотдеба:
> deb http://packages.dotdeb.org stable all
> deb-src http://packages.dotdeb.org stable all
>
> Установил nginx 1.0.1
> Установил PHP Version 5.3.6-6~dotdeb.1
>
> Но кажется с php-fpm проблемы: дикие
> тормоза, страницы генерируются по 16
> сек, в лог /var/log/php5-fpm.log пишется:
> tail /var/log/php5-fpm.log
> [15-May-2011 00:48:32] NOTICE: fpm is running, pid 19703
> [15-May-2011 00:48:32] NOTICE: ready to handle connections
> [15-May-2011 00:49:16] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 8 children,
> there are 3 idle, and 47 total children
> [15-May-2011 00:49:17] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 16 children,
> there are 9 idle, and 54 total children
> [15-May-2011 00:49:18] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 55 total children
> [15-May-2011 00:49:19] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 7 idle, and 56 total children
> [15-May-2011 00:49:20] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 59 total children
> [15-May-2011 00:49:21] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 60 total children
> [15-May-2011 00:49:22] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 8 idle, and 61 total children
> [15-May-2011 00:49:23] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 63 total children
>
> Пробовал увеличивать в
> /etc/php5/fpm/pool.d/www.conf
> pm.max_children = 200
> pm.start_servers = 40
> pm.min_spare_servers = 10
> pm.max_spare_servers = 70
> pm.max_requests = 500
> Не помогло - растут только
> соответствующие цифры в логе.
>
> Помогите разобраться в проблеме.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?25,198241,198241#msg-198241
>
>
Re: Проблема в php-fpm или в nginx
May 16, 2011 02:05PM
Nergal Wrote:
-------------------------------------------------------
> А что на сервере - какой
> авераж, кто в топе?

load average по 0-ям в момент когда страницы по 16 сек грузятся. Что и неудивительно, сервер отдыхает.
В топе тоже ничего необычного.

Есть подозрения, что на дотдебе кривой php 5.3.6. Только вот как поставить на Debian php-fpm не с дотдеба но с пакетов не знаю.
Re: Проблема в php-fpm или в nginx
May 16, 2011 02:13PM
Vitaliy Okulov Wrote:
-------------------------------------------------------
> C DNS все нормально?

А что с dns может быть? Скорее всего проблема именно в php, проверял скорость загрузки статического файла - летает все. То есть и nginx тут скорее всего ни при чем.
Re: Проблема в php-fpm или в nginx
May 16, 2011 05:16PM
Удалось выяснить следующее: проблемы в связке php-mysql.

Нагрузку давал siege'ом.

Результаты отдачи статического файла:
Transactions: 7824 hits
Availability: 87.28 %
Elapsed time: 252.56 secs
Data transferred: 105.57 MB
Response time: 2.38 secs
Transaction rate: 30.98 trans/sec
Throughput: 0.42 MB/sec
Concurrency: 73.60
Successful transactions: 7824
Failed transactions: 1140
Longest transaction: 24.63
Shortest transaction: 0.13

Response time - это среднее время загрузки страницы. Тут 2 сек.
То есть с nginx все нормально.

Вот результаты отдачи файла <?php phpinfo(); ?>
Transactions: 7821 hits
Availability: 86.56 %
Elapsed time: 255.03 secs
Data transferred: 64.80 MB
Response time: 1.98 secs
Transaction rate: 30.67 trans/sec
Throughput: 0.25 MB/sec
Concurrency: 60.87
Successful transactions: 7821
Failed transactions: 1214
Longest transaction: 24.15
Shortest transaction: 0.09

Response time: 1.98 secs - нормальный показатель. То есть сам php, если не обращается к Mysql работает нормально.

А вот такой ужас при тестировании реальных страниц сайта, то есть тех, где срабатывает связка php-mysql:
Transactions: 1626 hits
Availability: 76.55 %
Elapsed time: 299.95 secs
Data transferred: 16.96 MB
Response time: 25.59 secs
Transaction rate: 5.42 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 138.74
Successful transactions: 1626
Failed transactions: 498
Longest transaction: 32.63
Shortest transaction: 15.62

24 сек ждать загрузки страницы это конечно кошмар. Но что интересно, проблема не в нагрузке mysql на систему - по top'у все ок - по нулям, mysql не жрет ресурсов вообще. То есть где-то срабатывает задержка в самой связке php-mysql.

Кто может подсказать, что это такое?
Antony Dovgal
Re: Проблема в php-fpm или в nginx
May 17, 2011 12:34AM
On 05/17/2011 01:16 AM, valet wrote:
> Удалось выяснить следующее: проблемы в
> связке php-mysql.

Ох как у вас быстро мнение меняется.


> А что с dns может быть?

Да что угодно может быть.
Запустите MySQL с --skip-name-resolve и посмотрите.

--
Wbr,
Antony Dovgal
---
http://pinba.org - realtime statistics for PHP
Re: Проблема в php-fpm или в nginx
May 17, 2011 04:53PM
Antony Dovgal Wrote:
-------------------------------------------------------
> Запустите MySQL с --skip-name-resolve и
> посмотрите.

В /etc/mysql/my.cnf в секции [mysqld] добавил skip-name-resolve и перезапустил mysql. Попробовал опять тем же siege - результат опять 16 сек.

Transactions: 150 hits
Availability: 100.00 %
Elapsed time: 59.36 secs
Data transferred: 1.58 MB
Response time: 16.07 secs
Transaction rate: 2.53 trans/sec
Throughput: 0.03 MB/sec
Concurrency: 40.62
Successful transactions: 150
Failed transactions: 0
Longest transaction: 21.12
Shortest transaction: 15.21

Обратите внимание, даже самая быстрая загрузка 15 сек, а самая медленная - так вообще 21 сек.

Что еще может быть?
Помогите разобраться в проблеме.
Re: Проблема в php-fpm или в nginx
May 17, 2011 05:00PM
Забыл добавить, тестировал просто по ip. То есть врядли тут dns замешано.
Re: Проблема в php-fpm или в nginx
May 17, 2011 05:56PM
А если поставить xhprof и получить статистику по одному или нескольким запросам? Посмотреть, на каком вызове зависает скрипт, а дальше уже яснее будет, куда копать.
Antony Dovgal
Re: Проблема в php-fpm или в nginx
May 18, 2011 01:56AM
On 05/18/2011 01:00 AM, valet wrote:
> Забыл добавить, тестировал просто по ip.
> То есть врядли тут dns замешано.

MySQL резолвит имена, а не PHP.
Можно обращаться к MySQL хоть по телеграфу, а он всё равно при коннекте будет резолвить.

> Что еще может быть?

Диск? Сеть? Кривые запросы? Мне отсюда не видно что там.
Что показывает SHOW PROCESSLIST?

Не надо тестировать на реальных страницах сайта, увеличивайте "реальность" постепенно.
Начните с mysql_connect(), потом добавьте mysql_query() простой и т.д.

--
Wbr,
Antony Dovgal
---
http://pinba.org - realtime statistics for PHP
Dima Golovchenko
Re: Проблема в php-fpm или в nginx
May 19, 2011 02:44AM
А если просто из консоли запустить mysql, то сколько времени это займет?
Если юзеров в mysql прописать по доменным именам, то по идее
--skip-name-resolve не поможет и обращения к DNS все равно будет при
подключении.

Что мешает проверить работает или нет DNS на сервере и если нет, то
настроить, чтобы работал?

2011/5/17 valet <nginx-forum@nginx.us>

> Antony Dovgal Wrote:
> -------------------------------------------------------
> > Запустите MySQL с --skip-name-resolve и
> > посмотрите.
>
> В /etc/mysql/my.cnf в секции [mysqld] добавил
> skip-name-resolve и перезапустил mysql.
> Попробовал опять тем же siege - результат
> опять 16 сек.
>
> Transactions: 150 hits
> Availability: 100.00 %
> Elapsed time: 59.36 secs
> Data transferred: 1.58 MB
> Response time: 16.07 secs
> Transaction rate: 2.53 trans/sec
> Throughput: 0.03 MB/sec
> Concurrency: 40.62
> Successful transactions: 150
> Failed transactions: 0
> Longest transaction: 21.12
> Shortest transaction: 15.21
>
> Обратите внимание, даже самая быстрая
> загрузка 15 сек, а самая медленная - так
> вообще 21 сек.
>
> Что еще может быть?
> Помогите разобраться в проблеме.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?25,198241,198870#msg-198870
>
>
Alexey Samoylov
Re: Проблема в php-fpm или в nginx
May 19, 2011 02:44AM
Попробуй фпм переделать на префорки.

15 мая 2011 г. 23:43 пользователь valet <nginx-forum@nginx.us> написал:

> Система Debian 6.
> Подключил репозиторий дотдеба:
> deb http://packages.dotdeb.org stable all
> deb-src http://packages.dotdeb.org stable all
>
> Установил nginx 1.0.1
> Установил PHP Version 5.3.6-6~dotdeb.1
>
> Но кажется с php-fpm проблемы: дикие
> тормоза, страницы генерируются по 16
> сек, в лог /var/log/php5-fpm.log пишется:
> tail /var/log/php5-fpm.log
> [15-May-2011 00:48:32] NOTICE: fpm is running, pid 19703
> [15-May-2011 00:48:32] NOTICE: ready to handle connections
> [15-May-2011 00:49:16] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 8 children,
> there are 3 idle, and 47 total children
> [15-May-2011 00:49:17] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 16 children,
> there are 9 idle, and 54 total children
> [15-May-2011 00:49:18] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 55 total children
> [15-May-2011 00:49:19] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 7 idle, and 56 total children
> [15-May-2011 00:49:20] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 59 total children
> [15-May-2011 00:49:21] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 60 total children
> [15-May-2011 00:49:22] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 8 idle, and 61 total children
> [15-May-2011 00:49:23] WARNING: [pool www] seems busy (you may need to
> increase start_servers, or min/max_spare_servers), spawning 32 children,
> there are 9 idle, and 63 total children
>
> Пробовал увеличивать в
> /etc/php5/fpm/pool.d/www.conf
> pm.max_children = 200
> pm.start_servers = 40
> pm.min_spare_servers = 10
> pm.max_spare_servers = 70
> pm.max_requests = 500
> Не помогло - растут только
> соответствующие цифры в логе.
>
> Помогите разобраться в проблеме.
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?25,198241,198241#msg-198241
>
>
Re: Проблема в php-fpm или в nginx
May 22, 2011 06:17PM
>>Не надо тестировать на реальных страницах сайта, увеличивайте "реальность" постепенно.
Начните с mysql_connect(), потом добавьте mysql_query() простой и т.д.
Да, очень правильное замечание.

Создал тестовую БД, тестовый php-скрипт с буквально несколькими командами (соединиться, выбрать данные, закрыть) и вместо ожидаемых 16 сек увидел 0.01 сек кажется.

В общем в конце концов оказалось, что проблема вообще в скриптах движка, а именно один php-файл коннектился к удаленному серверу через @file_get_contents, что давало такую задержку.

В любом случае, спасибо всем за помощь.
Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 129
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready