LINUX.ORG.RU

Службы активны, логи пусты, а сайты не открываются (Linux red os, postgres, apache, php)

 , , , ,


0

2

Доброго времени суток!

Несколько дней ищу проблему и не могу её найти:

Есть веб сервер, настроено на нём 2 виртуал хоста (host1.domain.com, host2.domain.com) - всё корректно, со своими сертификатами и папками, крутится постгрес 12. Для разработки используется PHP.

В какой-то момент страницы просто перестают открываться (408 timeout). Смотрю в логи, там пусто, смотрю статус сервисов (httpd, php-fpm) всё работает. Более того, на сервере есть крон как шедулятор заданий, он запускает php скрипт и отрабатывает его, в то время как сами сайты недоступны.

Предполагаю, что нагрузка возросла, когда передали пользователям, либо какой-нибудь лог файл переполнен (ну это уже конспирология).

А решается этот бред перезагрузкой. И ладно бы раз в неделю перезагрузил и нормально, так он там может косячить 2-3 раза в день.. Подскажите, что можно ещё проверить (кроме прокладки между стулом и клавиатурой)? Куда копать? Кроме как зайти на страницы и понять, что они не открывается, определить, что есть проблема не могу.

Заранее спасибо.


страницы просто перестают открываться (408 timeout). Смотрю в логи, там пусто

Кто возвращает 408? Что в его логе? Что в сислоге?
Что в server-status httpd?


шедулятор заданий, он запускает php скрипт и отрабатывает его

Он наверное запускает cli интерпретатор?

slowpony ★★★★★
()

а в процессах что? можно установить htop чтобы видеть выедает ли кто-нибудь ресурсы железа. Как гипотезы это может быть:

  1. взломанное роботами пхп занимает ресурсы веб-серверов, надо поставить fail2ban и закрыть дырявое извне.

  2. какие-нибудь незакрытые дескрипторы файлов в бажном коде, или коннекты до субд

  3. железо, линукс живучий даже если жесткий отвалится он может не сразу окоченеть

Syncro ★★★★★
()
Ответ на: комментарий от slowpony

slowpony, 408 это последнее, что увидел в access логе httpd прямо перед тем, как оно перестало открывать сайты. в error логе только старые записи. в sys лог гляну, когда упадёт в следующий раз. server-status httpd - если это про модуль или что?

php да, просто через интерпретатор: #items_update 1,31 8-21/1 * * * /usr/bin/php -q /var/www/host1.domain.ru/html/php/jobs/task.php >> /var/postgres_job_log/db_proc_logs/items_update.log 2>&1

satrif
() автор топика

Есть опыт написания софтверного WatchDog для толстого и важного сервера СУБД.

Могу предложить Вам за 100 вечнозелёных президентов написать WatchDog, который будет перезагружать сервер при пропадании чего-нибудь, начиная от HTTP 408 и заканчивания зависанием RAID-контроллера. Также могу сделать диагностический дамп перед перезагрузкой. ЯП - Python. Можно и C++, но это будет сильно дороже.

adm-academic
()

Новый тренд, редос эта такой кали, по уровню пользователей, только корпоративный.

Несколько дней ищу проблему и не могу её найти

Саппорт не помогает?

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от mord0d

mord0d, Про редос поддержку не знаю. У нас есть интеграторы, которые дали нам инфраструктуру с ред ос. И пока мы на их поддержке я к ним пойду. Но хочу сначала сам попробовать разобраться.

satrif
() автор топика
Ответ на: комментарий от Syncro

Syncro, Буду ловить момент и пришлю информацию.

  1. то есть это джобы кроновские могут меня так подставлять? Это вроде как «прод» и остановить их пока не дают..
  2. не без греха, соединения в php для postgres я не все закрываю, как и результаты query не очищаю. С другой стороны, в мануалах для php postgres написано, что при завершении сессии коннект автоматически закрывается, как и очищение query результата (памяти).
  3. железо : cpu: Intel(R) Xeon(R) Gold 6254 CPU @ 3.10GHz, 3092 MHz; mem: 8gb; Диск 120гб, 100 свободно.
satrif
() автор топика

страницы просто перестают открываться (408 timeout)

Насколько я помню эта ошибка означает принудительное закрытие соединения сервером, похоже что по каким-то причинам плохо становится именно апачу, что он так поступает. Для начала можно попробовать рестартовать его по крону раз в несколько часов, если разбираться некогда.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от satrif

Вы им платите, пусть отрабатывают! Тем более, если есть инфра, не исключено что у них там свои заморочки, отличные от дефолтных дефолтов (и тут апстримный саппорт редоса может развести лапками и перевести стрелки на тех, кто всё это поднимал-настраивал).

mord0d ★★★★★
()
Ответ на: комментарий от satrif

в sys лог гляну, когда упадёт в следующий раз

Зачем стесняться и ждать следующего раза, когда можно посмотреть прямо сейчас?

server-status httpd - если это про модуль

Про модуль.

В зависимости от коньфигурации, ты утыкаешься либо в лимит на число процессов в httpd, либо в php, либо, совсем в плохом случае, в системный лимит или лимит на пользователя. Если в логе ничего нет - ты смотришь не в тот лог, либо закручено verbosity. Ищи лучше, откручивай verbosity логов и ищи снова, пока не найдешь.

slowpony ★★★★★
()
  1. тебе нужен мониторинг твоих сервисов. если ты не настроил вообще ничего, скорее всего установлен sysstat, и его архивы можно глянуть в ksar, например

  2. в момент, когда проблема возникла, ДО перезагрузки потрать 5-10 минут чтобы разобраться в том, что происходит

router ★★★★★
()
Ответ на: комментарий от vvn_black

4xx в http это клиентские ошибки. 408 скорее про то что сервер не дождался от клиента собственно запроса после установления соединения. Да и в целом одна пробежавшая в логе 408 мало о чем говорит, возможно это вообще не связанные вещи

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от slowpony

Только не бейте палками, а где этот syslog?

А вот про лимит это интересно. Сейчас снова падал, и в htop я заметил много процессов httpd: https://ibb.co/ZhkgmDQ

В пятницу смотрел в htop при падении, но я не знал, что искать: https://ibb.co/fqfbWGW

А что значит «откручивай verbosity»? Я не скажу, что я знаю много по линуксу (принудительно перешли).

satrif
() автор топика
Ответ на: комментарий от satrif

sysstat установлен. А подробнее про чтение архивов можно?

ls /var/log/sa/

Там лежат файлы вида sa08, sa09, sa10. число - это день месяца. В них сырые данные. Перевести в текстовый вид можно примерно так

export LC_ALL=POSIX
export LANG=POSIX
sar -A -f /var/log/sa08 > $HOME/sar08.txt

kSar: https://github.com/vlsi/ksar

я использовал 5.2.3 , более новые - на свой страх и риск

java -jar /path/to/ksar.jar

потом в нем открываешь созданный архив sar08.txt

В дистрибутиве файлы sar* могут формироваться автоматически, но если они сделаны с учётом локали, то формат будет не тот (например, запятая вместо точки как разделитель в float)

делал только по умолчанию логгирование

grafana. И к ней систему, которая будет собирать метрики в time-series db

  • prometheus + exporter’ы для твоих сервисов. сейчас самая популярная система
  • influxdb + telegraf (он из коробки собирает почти всё)

если уже знаешь, что тебе нужно, zabbix is fine too, но ты скорее всего не знаешь. поэтому ставь prometheus + grafana

для начала вытягиваешь в time-series базу (prometheus или influxdb) все метрики, какие получится достать, и пробуешь строить по ним графики. трафик на интерфейсе, трафик к httpd, количество запросов к httpd, пул worker’ов httpd. вообще всё, что может выдать рекомендованный модуль для httpd. пока для тебя grafana будет просто способом визуализации метрик. алерты добавишь потом, когда поймёшь, что тебе нужно

и так по всему, что используешь. ОСь, httpd/nginx, php-fpm, postgres, что ещё найдёшь

router ★★★★★
()
Ответ на: комментарий от router

Спасибо, с логами попробую посмотреть sysstat.

grafana … да, это надо посидеть, попотеть. У меня есть второй сервер для «дев», тоже виртуалка, но походу и она не потянет, она слабее.

satrif
() автор топика
Ответ на: комментарий от slowpony

В момент, когда падало server-status был недоступен.

статус служб httpd и php когда «упало» - https://ibb.co/4TYZzgn

статус служб после перезагрузки - https://ibb.co/5KK0Kj7

Означает ли это, что я упираюсь в предел «запросов», которые почему то висят? То есть мне надо смотреть сюда https://httpd.apache.org/docs/2.4/mod/event.html и как-то править https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers? И правится это пере-сборкой apache?

satrif
() автор топика

Ну собственно рассказываю в чём было дело. Это ни настройка apache, ни кривой код php, ни тяжёлые процедуры на постгре. С поддержкой выяснили, что это «криво» работающий каспер, жрал ресурсы, проверял файлы, забивал «все эфир». Безопасники наши поправили работу каспера для моего сервера, аптайм уже 3 дня, я открываю шампанское. Сейчас выясняем причину такого поведения с ТП каспера.

Всем спасибо за содействие!

satrif
() автор топика
Ответ на: комментарий от satrif

Мы всё-таки дождались момента, когда на вопрос, а почему что-то там в линуксе не работает, первый ответ «с отключенным каспесрким пробовал?».

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Не, ну я видел, что есть каспер в процессах, но по его работе у меня вопросов не возникло. К сожалению, всё ещё не могут ответить, чего не хватает касперскому.. памяти ли, cpu, скорости диска.. молимся на обновление, которое должно нам помочь. Попросил предоставить мониторинг, чтобы отследить «падение». Мне так же предложили сделать зеркальный сервер, по принципу балансировщика, но для меня это тёмная магия на данный момент. Блин делать второй сервак из-за того, что «шалит» антивирус - это же бред..

satrif
() автор топика