PostgreSQL ограничивается использованием одноядерного процессора (проблема блокировки отладки?) - PullRequest
1 голос
/ 18 октября 2019

В PostgreSQL 10, PostGIS 2.5.2, без каких-либо изменений данных (только SELECT запросы), у меня есть 40 идентичных запросов ГИС, выполняющихся параллельно (с разными параметрами), каждый из которых занимает ~ 20-500 мс. Сервер имеет много оперативной памяти, твердотельные накопители NVME.

Загрузка ЦП постоянно показывает 100% одного ядра, подразумевая, что все запросы застряли в ожидании чего-то, что не может выполняться параллельно, но я не уверен, как найтиit.

Изучение pg_stat_activity несколько раз показывает, что все запросы активны, и их wait_event может быть одним из следующих случаев:

  • wait_event равно NULL для всех
  • несколько ClientRead и lock_manager, NULL все остальное
  • много lock_manager и несколько ClientRead и NULL.

Есть лиспособ выяснить, что может быть причиной этого?

1 Ответ

0 голосов
/ 18 октября 2019

Это удивительно, поскольку запросы на чтение никогда не блокируются ничем, кроме блокировки ACCESS EXCLUSIVE, который требуется для таких операций, как DROP TABLE, TRUNCATE, ALTER TABLE и аналогичных операторов.

Возможно,блокировки - это «легкие блокировки» во внутренних структурах данных PostgreSQL, которые обычно хранятся очень короткое время. Я не знаю, что в запросе PostGIS могло вызывать высокую конкуренцию при таких внутренних блокировках, но тогда вы не показали оператор или план его выполнения, а также не указали точные события блокировки.

Если выу меня есть несколько одновременных запросов, каждый из которых занимает много времени, например, 500 мс, определенно должен выполняться параллельно.

Помимо возможностей некоторой внутренней конкуренции за блокировку, я могу придумать два объяснения:

  1. Большинство запросов достаточно коротки, чтобы одного ядра было достаточно для обработки всех запросов. Каждое соединение тратит большую часть своего времени на ожидание клиента.

  2. Система привязана к вводу / выводу, так что большинство процессоров просто трясут. Это указывалось бы в процентах по iowait ЦП от 10 и более.

...