Добрый день!
Имеется сервер postgresql 9.1
Систематически сервер виснет и при подключении к нему php выдает следующую ошибку
Error SQLSTATE[08006] [7] timeout expired
Зависание происходит систематически раз в сутки на несколько минут от 2 до 10, затем самоустраняется без ручного вмешательства.
Тестировал систематический опрос сервера БД с локалхоста и удаленно, периодичность проблем одинакова, поэтому исключаю проблемы сетевой доступности.
Подскажите, пожалуйста, в чем может быть дело.
оператива, диски.
оператива, диски.
Виртуальный сервер на SSD,
Виртуальный сервер на SSD, 8GB оперативной памяти.
Смотрите, что делается на
Смотрите, что делается на сервере в этот момент времени.
Очень похоже на прохождение checkpoint, когда нагрузка на сервер сильно растёт - буферы сбрасываются на диск и если сервер настроен неграмотно или проблемы с железом, то все ресурсы отдаются на дисковые операции, поэтому клиент курит в стороне.
Спасибо, а неподскажете как
Спасибо, а неподскажете как это можно отмониторить проще всего, в каких логах порыться? или как их настроить? на какие параметры конфигурации postgres и ядра линукс обратить особое внимание?
Для начала top'ом посмотрите
Для начала top'ом посмотрите когда начнётся. Смотрите load average и i/o wait. Если i/o wait большой - это с высокой степенью вероятности оно.
Включите логгирование по максимуму, смотрите логи PostgreSQL
Наблюдал через htop. Инстанс
Наблюдал через htop. Инстанс сервера БД в строке DSK показывает либо 100%, либо 100% в совокупности с другими postgres процессами (stat collector process или wal writer process).
Скажите, пожалуйста, это нормальная ситуация.
Я ведь просил i/o wait
Я ведь просил i/o wait посмотреть. У меня нет htop. Предполагаю, что 100% - это i/o wait? Тогда конечно, во-первых это ненормально, во-вторых wal writer process - это как раз то, что я писал - прохождение контрольных точек. Вам надо тоньше настроить WAL и checkpoint'ы, чтобы сброс буферов WAL на диск происходил чаще, тогда он не будет занимать столько времени и блокировать работу клиентов.
Прошу прощения, top выдавал
Прошу прощения, top выдавал значение wa близкое к нулю. load average сравнительно не большой. Спасибо Вам. Буду настраивать WAL.