Медленная (нестабильная) работа Apache2

Afterburner

New member
Сообщения
12
#1
Здравствуйте. Прошу помощи в обнаружении причин следующей проблемы.

В компании внутренний веб-сервер перевели на Astra Linux, конфигурация - Apache2, PHP 7.3, сервер БД выделенный, тоже на "Астре", Postgres Pro. Используется авторизация GSS на уровне Apache, соединение HTTPS.

Проблема в следующем. Скорость выполнения запросов нестабильна. В основном это скрипты PHP. Стабильно возникает задержка около 5 сек. Или не возникает, примерно 25% запросов выполняются 5 сек. Если в скрипте есть INCLUDE, вероятность словить задержку увеличивается. Т.к. все веб-приложения используют HXR (AJAX), задержки возникают постоянно и везде, что сильно сказывается на качестве работы интерфейсов.

Что было проанализировано. В первую очередь - сами скрипты. Дело точно не в коде, мы выполняли профилирование кода, запросов к БД - там нет никаких проблем.

Сама история обнаружения тормозов такая - первая установка веб-сервера сразу же имела эту проблему. Когда мы переустановили сервер, проблема исчезла. То есть всё работало отлично какое-то время, но спустя несколько месяцев опять началось...

Общение с коллегами, системными администраторами, пока не приносит результата. А мы программисты, и нам доступны разве что конфиги PHP и Apache, есть SSH доступ на веб.

Подскажите, какими средствами мы можем воспользоваться, чтобы найти пути к решению проблемы? Опыт сетевого администрирования небольшой есть. Но пока не ясно, куда копать - DNS, HTTPS (сертификаты), авторизация?
 

Карл

New member
Сообщения
491
#2
perf top - если чтото внутри
а может просто dns тупит и запросы коннекты зависают ?
пиши логи и смотри где затыки если php код свой
 

Afterburner

New member
Сообщения
12
#3
Может и DNS, может Postgres, что-то явно тупит, но вот как выяснить - что именно?
Логи Apache смотрел. Они просто показывают то, что я вижу и так - на каком-то из PHP файлов, где есть операции с БД, возникает затык, 5-10 сек.
Пробовал логировать запросы к БД, все запросы выполняются моментально практически.
Код тоже выполняется предсказуемо.
Но затыки остаются.
Поэтому у меня подозрение на сетевое взаимодействие.

Я как-то даже параноидально логировал кусок кода... чуть ли не каждую команду, так вот тормоза возникают в произвольном месте кода...
То если или на INCLUDE, или в SQL-запросе. Там, где хоть что-то происходит ))
 
Последнее редактирование:

Afterburner

New member
Сообщения
12
#5
Сервер виртуальный. Это всё, что знаю )
Сегодня почти со 100% уверенностью могу сказать, что задержки возникают при выполнении запросов к БД. Но сами запросы на сервере выполняются моментально, проверено. То есть, они или долго долетают, или не сразу прилетают обратно. Что там на Postgres, очередь, или это сокеты на веб-сервере, неизвестно. Направил в очередной раз админам инфу...
 

Карл

New member
Сообщения
491
#6
на виртуальном в конторе недавно заметил что если его не трогать - начинает тупить, пока "не проработается"
как поправить не выяснял (админам забота), пока не сильно актуально
т.е. но это не проблема астры или софта - виртаулка дурит
 

Afterburner

New member
Сообщения
12
#7
Так как мы во всех приложениях используем Zend, сегодня прикрутил профайлер к Zend Db.
Как и следовало ожидать, все запросы выполняются быстро, безо всяких проблем.
Так что становится очевидным, что дело в транспорте сетевом.
 

Afterburner

New member
Сообщения
12
#9
Установил на сервер xdebug. Профилирование показало на Zend, время сжирается на pdo->execute, то есть это определенно сервер БД.
Но легче от этого не стало.
Если запросы на самом сервере выполняются стабильно быстро, а из PHP - нет, то это транспорт (сеть).
Копаю дальше. В меру возможностей своих...
 

oko

New member
Сообщения
1 254
#11
Прогреваю модуль экстрасенсорики... пожалуйста, подождите...
GSSAPI? ALD? Тогда вполне вероятен косяк "контроллера домена" (или самого механизма Kerberos + DNS) при аутентификации каждой сессии запросов на Apache2. И, если сессия рвется после каждого запроса, то...
А "плавающая" часть задержки объясняется кэшированием ИАФ-информации...
 

Afterburner

New member
Сообщения
12
#12
вполне вероятен косяк "контроллера домена" (или самого механизма Kerberos + DNS) при аутентификации каждой сессии запросов на Apache2
Да, такое было. На Астре, постоянно рвались коннекты при авторизации через GSSAPI.
Reversive DNS админы так и не настроили, но мы сами "нарыли", что нужно прописать rdns=false в krb5.conf на клиенте, и всё работает...

Интуиция мне подсказывает, что и тут может всё упереться в rdns, попросил настроить, но чую ответ будет отрицательный.
 

Afterburner

New member
Сообщения
12
#13
Да, такое было. На Астре, постоянно рвались коннекты при авторизации через GSSAPI.
Reversive DNS админы так и не настроили, но мы сами "нарыли", что нужно прописать rdns=false в krb5.conf на клиенте, и всё работает...

Интуиция мне подсказывает, что и тут может всё упереться в rdns, попросил настроить, но чую ответ будет отрицательный.
Забыл сразу сказать, что веб сервер и сервер БД в разных доменах.
 

oko

New member
Сообщения
1 254
#14
to Afterburner
Если сервер БД тоже аутентифицирует по GSSAPI запросы от Apache2, то нужно смотреть настройки Keberos-аутентификации между доменами. Откровенно, не в курсе, насколько корректно AstraLinux поддерживает "доверительные отношения" и прочие передачи тикетов из одного домена в другой...
А вообще, зачем такая связка принципиально? Или это ограничения dev-зоны (кто-то из них "боевой", а кто-то в домене разработчиков)?
 

Afterburner

New member
Сообщения
12
#16
Happy End.
Со слов админов, "обратный DNS не будет работать между разными доменными зонами", поэтом создали в главном домене запись для сервера БД и resolve пошёл.
Тормоза ушли.
 

oko

New member
Сообщения
1 254
#17
to Afterburner
Либо он выразился крайне упрощенно, либо вы интерпретировали некорректно. Так-то "доверительные отношения" между Win-доменами прекрасно чекают реверс-зону DNS в каждом домене. И почтовые серверы в глобальной сети реверс-зоны проверяют (должны, ага) при отправке/приеме почты между совсем разными и нифига не доверенными доменами...
То ли дело, что все зависит от того, как у вас настроено междоменное взаимодействие, тем более "Astra-domain" и "Windows-domain". Упрощенная ALD в составе AstraLinux таких связей вообще не поддерживает, насколько мне известно. FreeIPA (в составе или вне состава ALD Pro) уже имеет подобные связки. Но насколько они успешны с позиции Kerberos и, как следствие, GSSAPI - не в курсе. Возможно, в ближайшее время в этом вопросе как раз придется разобраться. Будет время - отпишусь...