PostgreSQL 9.6. Проблема следующая: после миграции через pg_dump все идет хорошо где-то 30-40 минут (т.е. количество соединений стабильное, количество транзакций в секунду нормальное и т.д.), после чего у некоторых соединений появляется статус LWLockNamed: WALWriteLock (смотрел через PGAdmin). Со временем таких соединений становится все больше и в какой-то момент их количество моментально подскакивает до 700 (максимальное количество соединений, которое может забрать пул на стороне веб-сервиса, который работает с БД). htop показывает бешеную среднюю нагрузку (20 18 18) и огромное количество процессов с соединениями, рядом с которыми виден статуc UPDATE waiting. Все это безумие само по себе не прекращается: соединения почему-то не закрываются и остаются висеть. Как думаете, в чем может быть проблема? Куда копать? Конфигурации обоих серверов стандартные, изменены только всякие shared_buffer, work_mem и max_connections. Если кому интересно, прикрепляю gist на оба файла конфигов.
- 9.2: https://gist.github.com/dtsey/d3c3fa59adbe330f7bbb31a4e29f9d57
- 9.6 https://gist.github.com/dtsey/f9b1c4307ecf95027cc3ddfe6305e27a
P.S. если даже предположить, что проблема на стороне пула соединений в веб-сервере, то все равно остается загадкой, почему 9.2 может жить и работать, а 9.6 -- нет.
Какая версия ядра линукса?
Быстро-быстро выгребаемое максимальное количество соединений наводит на мысль о синхронных репликах, от которых нет ответа. Но причем тут LWLockNamed: WALWriteLock и UPDATE waiting - я не скажу. 9.6 с криво настроенной синхронной репликацией не гонял.
Обсуждают сегодня