Postgres использует слишком много процессора

Я пытался отладить проблему с postgres, где слишком много ресурсов процессора на сервере. Я подумал, что это может быть связано с неоптимизированными запросами и тому подобным, однако я не смог найти там никакого решения. Я пытался использовать разные настройки для postgres, настраивая конфиг. Я наконец установил свои конфигурации на:

max_connections = 1000
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 4194kB
maintenance_work_mem = 1GB
checkpoint_segments = 32
checkpoint_completion_target = 0.7
wal_buffers = 16MB
default_statistics_target = 100
checkpoint_timeout - 15 min
random_page_cost = 0.5
seq_page_cost = 0.2

Сервер может легко предоставить эти ресурсы. Я до сих пор не смог снизить чистую загрузку ЦП (он составляет 40% + для одного пользователя, 80% + для 2, а после 3 он начинает сканировать.

Наконец, я написал следующую функцию в качестве теста:

public function testLoad(){
define("DBCOFIG", "host=hostname port=5432 dbname=db user=user password=pwd");
pg_connect(DBCOFIG)or die('Failed');
pg_query("select 1");
echo 'hi';die;
}

Когда я нажимаю на эту функцию, она дает те же самые результаты, то есть 40% загрузки процессора, когда вызов активен. Понятно, что проблема не в том, что запросы запускаются, а в самом подключении, которое php устанавливает к базе данных. Каждый пользователь создаст новый http-запрос, а каждый новый запрос создаст новое соединение с базой данных, что затем создаст проблему.

Я планирую иметь пользовательскую базу с примерно 100 параллельными соединениями в любое время, поэтому, очевидно, текущая настройка не будет работать для меня. Любой совет, где я иду не так? Какая-то конфигурация у меня может отсутствовать?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]