PostgreSQL pg_stat_activity показує COMMIT


11

Нещодавно наш сервер баз даних замінив оновлену машину з 4-х чотирьохядерними процесорами та 32 Гб оперативної пам’яті. Ми також замінили стару скриньку, щоб вона служила рабом із поточною реплікацією. В обох полях працюють CentOS 6.3 та PostgreSQL 9.2. Postgres - це єдине, що працює на кожному з скриньок.

Ця конфігурація існує близько місяця або близько того, коли раптом ми почали стикатися з деякими проблемами, коли трафік почав наростати. Те, що ми почали бачити, - це надзвичайно велике навантаження процесора часом (зверху показано середнє навантаження в 270), і коли ми можемо подивитися, pg_stat_activityми побачимо, що більшість наших підключень знаходяться в COMMITстані. Залишившись у спокої, це врешті-решт закінчиться, і система стане чуйною, коли з'єднання стають IDLE. Ми намагалися вимкнути реплікацію, щоб дізнатися, чи це може бути проблема, але проблема все ще зберігається.

Ми спробували діагностувати, що відбувається, і трохи втрачаємо. Вихід від запуску perfпоказує щось подібне до нижче, і я поняття не маю, що 0x347ba9собою являє.

+  41.40%       48154  postmaster  0x347ba9         f 0x347ba9                                   
+   9.55%       10956  postmaster  0x2dc820         f set_config_option                          
+   8.64%        9946  postmaster  0x5a3d4          f writeListPage     
+   5.75%        6609  postmaster  0x5a2b0          f ginHeapTupleFastCollect                    
+   2.68%        3084  postmaster  0x192483         f build_implied_join_equality                
+   2.61%        2990  postmaster  0x187a55         f build_paths_for_OR                         
+   1.86%        2131  postmaster  0x794aa          f get_collation_oid                          
+   1.56%        1822  postmaster  0x5a67e          f ginHeapTupleFastInsert                     
+   1.53%        1766  postmaster  0x1929bc         f distribute_qual_to_rels                    
+   1.33%        1558  postmaster  0x249671         f cmp_numerics

Жоден із запитів, які виконує додаток, не є особливо складним. Плани пояснення займають не більше 1 секунди (більшість - набагато швидше). До того ж, хоча це трапляється, коли трафік починає збиратись, ми не говоримо про величезне навантаження на трафік (Стара машина працювала з цим досить легко).

У цей момент я трохи затуманився, що спробувати далі. Будь-яка допомога чи пропозиції будуть вдячні. Якщо є якась додаткова інформація, яка допомогла б, просто запитайте, і я можу внести зміни до цього питання.

Конфігурація диска:

  • RAID-контролер Perc 6i
  • 5 х 146 Гб накопичувачі SAS
  • Налаштовано як 2x146GB RAID-1 для WAL та 3x146GB RAID-5 для системи та даних

Оновлення:

Нижче наведено вихід VMStat, коли система працює нормально і коли ЦП знімається. Коли виникає проблема, переривання, здається, швидко зростають.

Під час нормальної роботи:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 18938590 303763 21947154    0    0    28    52 7466 12649  2  1 97  0  0   2013-01-14 16:03:25 EST
 0  0      0 18938396 303763 21947154    0    0     0    19 7107 12679  2  0 98  0  0   2013-01-14 16:03:35 EST
 1  0      0 18938904 303763 21947162    0    0     0    54 7042 12708  1  1 99  0  0   2013-01-14 16:03:45 EST
 1  0      0 18938520 303763 21947260    0    0    33    66 7120 12738  1  1 99  0  0   2013-01-14 16:03:55 EST

Коли високий рівень використання процесора:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
343 0      0 32680468 226279 11339612    0    0     0   214 26692 12225 80  20  0  0  0   2013-01-11 16:45:53 EST
374 1      0 32673764 226291 11340345    0    0     0    77 54893 11572 80  20  0  0  0   2013-01-11 16:46:03 EST
383 0      0 32616620 226304 11340956    0    0     0   102 55540 12922 82  18  0  0  0   2013-01-11 16:46:13 EST
315 0      0 32602038 226320 11341378    0    0     0    79 54539 12441 82  18  0  0  0   2013-01-11 16:46:23 EST

Які диски має нова коробка? Це відбувається на обох вузлах або лише на одному з них?
Trygve Laugstøl

@trygvis - я оновив питання зі специфікаціями диска. Проблема відбувається на вузлі Master. Я не намагався просувати Раба і спрямовувати на нього трафік, тому не впевнений, чи це теж проблема при тих самих обставинах. Як раб, машина, схоже, не відчуває жодних проблем.
jcern

2
Подумайте про використання perfінструменту, щоб зробити кілька системних профілів та деякі PostgreSQL-профілювання. Подивіться, де відбувається використання процесора. До речі, форматування вашої 2-ї vmstatбезнадійно налаштовано, а стовпці 1-ї - нерівні, тому важко читати. Перевірте, чи додає commit_delayпокращення. Перевірте, чи є у вашого RAID-контролера керований кеш-пам'ять резервного копіювання, а якщо його немає, знайдіть його. Чи багато часу проводиться в iowait? Це здається , що використання процесора в деяких звітів, але не на самому ділі.
Крейг Рінгер

@CraigRinger у контролері є кеш-пам'ять, керований акумулятором, і це ввімкнено. Очікування від іостату залишилося в одинарних до низьких двозначних цифрах. Ми будемо продовжувати спробувати ще кілька профілів за допомогою perf. Я також виправив форматування другого VMStat, дякую, що вказав на це.
jcern

Відповіді:


11

Після подальшої діагностики та деякого гуглінгу ми зіткнулися з цією статтею, в якій описано багато тих самих симптомів, які ми відчували. Першопричина їхньої проблеми (і з того, що ми можемо сказати, і наша) була пов'язана з Transparent Huge Pagesвпровадженням.

Після відключення Transparent Huge Pagesцієї команди:

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

Здається, проблема вирішена. Останні два тижні ми працювали за збільшеним навантаженням, і проблема не з’явилася на світ. Контексти та переривання системи послідовно 1/10 частина того, що вони були, і середній системний час також зменшився.

Не впевнений, чи це рішення для всіх, але я публікую його тут як можливу причину, якщо він може допомогти комусь іншому вирішити подібну проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.