Как ограничить долго работающие запросы к postgres? Чтоб бы не вешали процесс PHP. Способы.

Какие есть способы что бы ограничить время работы долгих запросов?
Например некоторые запросы которые делают select по неиндексированным полям могут очень прям долго занимать время.

Что пробовал —

Код (Text):
  1.     $myPDO = newPDO(‘pgsql:host=127.0.0.1;dbname=db’, ‘root’, ‘root’, array(
  2.         PDO::ATTR_TIMEOUT => 5, // in seconds
  3.         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
  4.     );

Насколько я понял это тоже самое что и
set statement_timeout TO 5000;
в первом запросе к базе

в php.ini

Код (Text):
  1. archiving_query_max_execution_time = 10
  2. live_query_max_execution_time = 5
  3. max_execution_time = 10

Также — ini_set(‘max_execution_time’, 10);

Но работает все как то не очень однозначно. Явно больше 10секунд работает запрос.

установлен nginx + php-fpm
Проблема в том что воркеры — php-fpm начинают кончаться если несколько таких запросов запустить.

Какой самый лучший способ отсекать долго работающии запросы?

Также как мониторить висячие процессы php-fpm.

 

сделать их быстрыми

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *