Есть смысл обновиться до последней версии php и php-fpm, там много всего
пофиксено.
> "
>
> Конфигурация
> Gentoo.
> php-5.2.4 + fpm 0.5.3
> nginx 0.5.34
>
> Машина ксеон с квадро процессором и сас винтами.
>
> Как уже написал выше проскакивают 502 ошибки нгинкса причем происходит
> это "пачками". Т.е. скажем в течении 3-10 секунд все запросы получают
> гейтвей таймауты.
> Общение Нгинкса с пхп-фпм через сокеты (tcp пробовал какртина такая
> же)
> При этом в логе php-fpm девственно чисто. В логе пхп естественно тоже.
> В логах нгинкса следующее
>
> 2008/05/03 13:40:23 [error] 2708#0: *11340879 writev() failed (107:
> Transport endpoint is not connected) while sending request to
> upstream, client: .....
> 2008/05/03 13:40:24 [error] 2708#0: *11343058 writev() failed (107:
> Transport endpoint is not connected) while sending request to
> upstream, client: .....
> 2008/05/03 13:40:24 [error] 2709#0: *11349538 writev() failed (107:
> Transport endpoint is not connected) while sending request to
> upstream, client: ......
>
>
> Есть у кого нить идеи?
http://groups.google.com/group/highload-php-ru/msg/a5a2883173f56f5d
--
Andrei Nigmatulin
GPG PUB KEY 6449830D
Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take
Собственно, пробуйте увеличить /proc/sys/net/core/somaxconn, должно стать
лучше.
Если записи такого типа "writev() failed (107: Transport endpoint is not
connected)" все равно останутся - значит зависания скриптов у вас происходят
систематически. Надо будет подсмотреть чем они занимаются в момент проявления
проблемы.
Насколько я понимаю, этой командой во freebsd, в том числе, смотрится размер
backlog. В линуксе прямого аналога нет, но кол-во соединений в backlog можно
посчитать сделав netstat -ntp. Все соединения в состоянии ESTABLISHED, но еще
не ассоциированные с процессом - это backlog (для которых еще не сделали
accept).
unix или inet - разницы нет на этом уровне.
> либо если нет желания :-) "vmstat -z | grep tcp" скорее всего сокетов
> не хватает... "
> отличный но он явно для фряхи, а нет ли аналогов для этого под
> линуксом?
--
1) Всеми правдами и неправдами ускорять исполнение php скриптов и запросов к
базе данных - профайлинг, тюнинг, кэширование и т.д. В итоге php воркеры
будут обрабатывать запросы быстрее и вероятность переполнения очереди
уменьшится.
2) Увеличить мощность сервера, добавить процессоров, памяти и т.п. Результат
должен быть как в п. 1
На самом деле, секунда - это очень много. Или у вас система плотно перегружена
запросами и работает на пределе (смотреть top, vmstat, iostat и т.п.) или
имеют место массовые ожидания общих ресурсов, типа file locks, databases и
т.п. Отсюда и высокая вероятность большого времени исполнения запроса,
неважно, в accept queue он или уже исполняется. Это все теория массового
обслуживания.
Я планирую в будущем добавить в php-fpm средства визуализации "занятости"
воркеров, чтобы было примерно понятно куда копать.
Я конечно не эксперт во FreeBSD, но при использовании unix sockets впринципе
не может быть никаких обращений к носителю, на котором он располагается.
Соответственно, мне лично совершенно непонятен этот совет - перенести сокет на
memdisk.
> Попутно вопрос
> http://www.lexa.ru/nginx-ru/msg18952.html
Для отслеживания и устранения таких ситуаций в 0.5.9-rc2 появились новые
директивы - request_slowlog_timeout и request_terminate_timeout.
Подробнее - здесь:
http://groups.google.com/group/highload-php-ru/browse_thread/thread/901402a29ec7ba1a
отключить EAccelerator?
--
Wbr,
Antony Dovgal
Я бы сказал, проблема скорее всего именно в нём.
> Ошибки возникают редко и как то связаны с сешенкуками.
reproduce case?
--
Wbr,
Antony Dovgal