Странное поведение веб-сервера на 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 не вызывают никаких подозрений. Я понимаю, что исходных данных очень мало (не всё же подряд кидать), но, если честно, я немного в ступоре.
  • Вопрос задан
  • 6638 просмотров
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽