Чи може занадто багато сполук у режимі очікування впливати на продуктивність PostgreSQL 9.2?


8

На деякі запити на моєму сервері баз даних, як видається, потрібен тривалий час, і я вважаю, що використання процесора висока. Під час бігу ps auxя бачу ~ 250 "простоюючих" з'єднань (які, на мою думку, занадто багато). Я не почав ставити повну діагностику, але хотів дізнатися, чи це хороше місце, щоб почати шукати.

Я також використовую PgBouncer з об'єднанням на рівні транзакцій. Я підозрюю, що можу легко зменшити кількість idleз'єднань, налаштувавши розмір пулу. Однак я не хочу починати робити занадто багато змін, якщо немає вагомих причин для цього.

Чи може багато idleпідключень у PostgreSQL 9.2 впливати на продуктивність?

Дуже дякую!


що означає "занадто багато непрацюючих з'єднань"? десятки? сотні?
jap1968

Відредаговане питання. Дякуємо, що вказали на це. Просто для того, щоб було зрозуміло, останній підрахунок становив ~ 250
Хуан Карлос Кото

Можливо? Я знаю, що OBA Dracle тут попросив людей встановити свої інструменти розробки, щоб використовувати один сеанс для всіх вікон (замість нового сеансу для кожного вікна), коли база даних починає працювати дуже повільно. Точне число, яке вважається "занадто великим", ймовірно, буде залежати від ресурсів, доступних для вашої бази даних.
FrustratedWithFormsDesigner

Відповіді:


3

Я серйозно сумніваюся, що непрацюючі з'єднання - це ваша проблема. PostgreSQL дуже здатний обробляти непрацюючі сеанси, оскільки вони майже не потребують ресурсів. Активні сеанси, з іншого боку, набагато частіше є причиною повільності.

Див. Https://wiki.postgresql.org/wiki/Number_Of_Database_Connections для ознайомлення з кількістю підключень до бази даних.


Прості сеанси з невиконаними транзакціями часто неслухняні винуватці!
Philᵀᴹ

Я згоден, Філ, хоча це насправді не про PostgreSQL - це більше про те, як написано кінцевий клієнт (якщо я чогось не пропускаю).
Макс Вернон

Будь ласка, дивіться пов’язане з цим питання . Це дійсно допоможе, якби ви поставили на нього. Дякую!
Хуан Карлос Кото

Насправді простої з'єднання мають багато (пам'ять) накладних витрат, і їх слід уникати (я думаю, що це виділяє близько 10 Мб на з'єднання, тому у вашому випадку ви витратите принаймні 2,5 Гб пам'яті)
Kedare

1
@MaxVernon - у моєму запущеному сервері postgresql 9.5 у мене є 25 холостих процесів, для стовпця RES, е. процес в середньому становить близько 12 МБ (діапазон: 4,5 Мб - 584 МБ, я підозрюю, що більші мають невмілене tx).
серд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.