Странное поведение веб-сервера на nginx+php-fpm?

Коллеги, привет.



Ситуация-загадка.



Есть web-сервер на nginx и php-fpm. Debian.



# nginx -v

nginx version: nginx/1.2.1

# php5-fpm -v

PHP 5.4.4-14+deb7u3 (fpm-fcgi) (built: Jul 17 2013 17:57:18)

Copyright © 1997-2009 The PHP Group

Zend Engine v2.4.0, Copyright © 1998-2012 Zend Technologies

with XCache v2.0.0, Copyright © 2005-2012, by mOo

# uname -a

Linux 3.2.0-4-686-pae #1 SMP Debian 3.2.46-1 i686 GNU/Linux

# cat /etc/debian_version

7.1



# df -h

Filesystem Size Used Avail Use% Mounted on

rootfs 20G 3.3G 16G 18% /

udev 10M 0 10M 0% /dev

tmpfs 61M 80K 61M 1% /run

/dev/xvda1 20G 3.3G 16G 18% /

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 121M 0 121M 0% /run/shm



Ни с того, ни с сего внезапно перестали работать сайты.

Перезапуск демонов nginx и php-fpm ничего не дал. Отправил сервер в ребут, сайты заработали. Но ненадолго, потом опять перестали открываться. При этом nginx продолжает работать.



Итог. После каждого ребута сайты работают минут пять и потом перестают открываться.



Куда и как копать? Логи nginx не вызывают никаких подозрений. Я понимаю, что исходных данных очень мало (не всё же подряд кидать), но, если честно, я немного в ступоре.
  • Вопрос задан
  • 6669 просмотров
Решения вопроса 1
krotish
@krotish Автор вопроса
Друзья, всем спасибо за помощь и советы!

Итак, проблема решена, была явно на стороне Amazon AWS.
Помогло выключение и включение инстанса (инстанс на EBS) из консоли EC2. Перезапуск инстанса из той же не помогал.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
IlyaEvseev
@IlyaEvseev
Opensource geek
Разбирайтесь по порядку.

1) статические страницы открываются?
2) обращения с localhost через «wget -S ...» тоже не работают?
3) страница с <?php phpinfo(); ?> что-нибудь возвращает?
4) что в момент проблемы говорят команды «free» и «ps axwwll»?
5) предварительно проверьте настройки MySQL через mysqltuner,
6) проверьте в момент начала проблем загрузку через mytop.
Ответ написан
gaelpa
@gaelpa
Мало информации.
Посмотрите логи php-fpm,
включите логи nginx, какие там ошибки,
посмотрите какие процессы находятся в состоянии D в выводе «ps axfu», какая вообще загрузка и какими процессами,
посмотрите, нет ли у вас стопки выполняющихся запросов в mysql (предположил по-умолчанию).

Навскидку, возможно это переполнение пула php-fpm вызванное заторами в скриптах (может тяжелые запросы к базам или даже ошибка базы).
Ответ написан
opium
@opium
Просто люблю качественно работать
Обычно такое случается когда переполняются какие нибудь сокеты на виртуалке, а они бывают на ней урезанные, ну или сосед захавал их если скажем cgroups или openvz.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Если не происходит даже подключения к nginx'у, тогда проверки такие:
1) файрволл? iptables-save
2) системные лимиты? dmesg | tail
3) подключение с данного сервера к locahhost'у тоже виснет? wget -S -O /dev/null 127.0.0.1/
4) service nginx restart не помогает?
5) если добавить в настройки nginx минимальный сервер на 81 порт, он тоже не открывается?

Про исчерпание сетевых сокетов и файловых дескрипторов:
serverfault.com/questions/350643/exhausting-linux-machine-tcp-socket-limit-70k
serverfault.com/questions/154663/how-to-find-the-number-of-open-ports-in-linux

Вывод команд обрамляйте «code»
чтобы столбцы не разъезжались, иначе ничего не понять.
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Залейте куда-нибудь на pastebin полные конфиги nginx'a.
Не исключено, что в них какая-нибудь мелкая очепятка.
Например, вместо лимита на 4 воркера выставлен лимит на 4 коннекта.

По-прежнему интересно взглянуть на dmesg | tail -30 и iptables-save.
Ответ написан
krotish
@krotish Автор вопроса
Итак, друзья, nginx был заменён на lighttpd.

И ситуация осталось прежней, не открывается сайт на 80 порту.
Меняем порт на 81 и всё открывается. Файрволл чист, см. выше. В консольке амазона секьюрити группа настроена — открыты 80, 81й порты.
Как же так? Что может блочить доступ, если как выяснили на другом веб сервере то же самое.
Ответ написан
@boodda
ну точно это fastvps ии hetzner. Одно и тоже каждые 2 дня.
Тупо поставил ежеминутный крон, если (в моем случае), нагрузка по топ > 2, то
service php5-fpm restart
Ответ написан
@Z0nd0R
Сервер в хетзнере, тоже сталкивался с подобной проблемой. Выловить причину не удалось. Помогал только рестарт сервера.
Проблема появлялась после обновления аккаунтов в ISP Manager. Т.е. после перезагрузки апача и нгинкса.

После обновления софта проблема вроде как исчезла.

З.Ы. Ось CentOS 6.4
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы