Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Проблемы с FreeBsd + php-fpm
цитата
19/12/14 в 11:43
 Zona
Нужен совет.
При смешных 150 запросах в секунду на FreeBsd 8.4 + php 5.5 (php-fpm) + nginx
Процессы php-fpm выжирают весь CPU. Такое ощущение что не работает Zend opcache (хотя включен и должен работать)

На Linux машинах такой проблемы не наблюдалось, но данный проект с инфраструктурой на FreeBsd и переехать не получится.

Xhprof показал нагруз основной дают подключаемые вендоры composer (которые уже как только можно оптимизированы).

Последние большие проекты все работают на Debian или Ubuntu и таких проблем нет, гугл ничего конкретного не дал.

Может кто сталкивался с подобным?
цитата
19/12/14 в 12:20
 condom007
Выполни плиз "netstat -Lan", там будет строчка с кол-вом коннектов к сокету, с которым работает php-fpm, скинь ее плиз.

Кроме этого конфиг php-fpm засвети плиз. Интересует всё с префиксом pm.
цитата
19/12/14 в 12:36
 Zona
condom007:

Some tcp sockets may have been created.
unix 0/0/8192 /tmp/fastcgi_sock

pm.start_servers = 8
pm.min_spare_servers = 8
pm.max_spare_servers = 32
pm.max_children=32
pm.process_idle_timeout = 10s
pm.max_requests = 200
pm.status_path = /status
цитата
19/12/14 в 12:50
 condom007
Zona писал:
condom007:

Some tcp sockets may have been created.
unix 0/0/8192 /tmp/fastcgi_sock

pm.start_servers = 8
pm.min_spare_servers = 8
pm.max_spare_servers = 32
pm.max_children=32
pm.process_idle_timeout = 10s
pm.max_requests = 200
pm.status_path = /status


А ты когда выполнял netstat проблемы на сервере были или нет (те, которые ты описывал)?

И еще, какое примерно среднее время ответа скрипта phpшного? Замеряли?
цитата
19/12/14 в 12:58
 Zona
Цитата:
А ты когда выполнял netstat проблемы на сервере были или нет (те, которые ты описывал)?


Не совсем, так как все сейчас через nginx перекешировано, сейчас отключил кеш, нагруз сразу вырос до 50% (восьмиядерный Intel Xeon E3-1230) и держится примерно в этом диапазоне, в пиках до кеширования выжирал до 100%, LA совсем безумные данные показывало 80+

Сейчас выполнил команду - по сокетам не поменялась картина (при 50% CPU)
цитата
19/12/14 в 13:05
 Zona
Цитата:
какое примерно среднее время ответа скрипта phpшного?


да по xhprof до оптимизации загрузки composer вендоров выдавал 23 секунды icon_biggrin.gif, что явно говорило о том что в байткод ничего не кешится,
после оптимизации 309 миллисекунд, но это все равно много для выборки и отдачи json файлов (иногда без доступа к бд).

Я грешу на Zend Opcache/ Zend Optimizer, который "как-то не так" работают. Сейчас вот ищу/ставлю мониторинг работы этих приблуд, чтобы проверить.
цитата
19/12/14 в 13:23
 condom007
Zona писал:
да по xhprof до оптимизации загрузки composer вендоров выдавал 23 секунды icon_biggrin.gif, что явно говорило о том что в байткод ничего не кешится,
после оптимизации 309 миллисекунд, но это все равно много для выборки и отдачи json файлов (иногда без доступа к бд).

Я грешу на Zend Opcache/ Zend Optimizer, который "как-то не так" работают. Сейчас вот ищу/ставлю мониторинг работы этих приблуд, чтобы проверить.


Сколько же у тебя там либ композер насобирал? Скрипт при отдаче json'а юзает все эти либы? Автолоадер свой или композеровский? У тебя там случайно никакой xdebug или xhprof для каждого запроса не включен?
цитата
19/12/14 в 13:31
 Zona
condom007:
Цитата:

Сколько же у тебя там либ композер насобирал? Скрипт при отдаче json'а юзает все эти либы? Автолоадер свой или композеровский?


Автолоадер теперь прикомпилен и там теперь нет проверок file_exists.
используется Silex (тот что на компонентах Symfony2) в качестве фреймворка, естественно он грузит все.

Данное приложение - это API для мобильных приложений и плагинов для браузеров.
То есть где-то отдается статический json, где-то с измененной структурой, где-то формируется из данных в БД.

Аналогичные приложения запускались под линуксом и таких проблем не возникало.
цитата
19/12/14 в 14:17
 lalex
Уверен, что на линуксе точно такие же конфиги php-fpm пула?
150 rps - это примерно по 50 каждые 300 мс = время отдачи контента. pm.max_children=32 может не хватать. Смотри php-fpm.log
Также pm.max_requests = 200 не очень хорошо. Процессы будут почти каждую секунду перезапускаться. Если память не течет, то можно поставить pm.max_requests = 0.
цитата
19/12/14 в 14:48
 condom007
lalex писал:


А мы уже посмотрели пул очередей, он пустой. Поэтому спаунер, имхо, можно исключить из подозрений.
цитата
19/12/14 в 15:08
 Zona
На линуксе такие же настройки.

Господа, спасибо за подсказки - буду разбираться дальше
цитата
19/12/14 в 16:40
 condom007
Zona писал:

Отпишись потом плиз из-за чего проблема была. Тоже интересно.


Эта страница в полной версии