За последние 24 часа нас посетили 15440 программистов и 1463 робота. Сейчас ищут 832 программиста ...

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

Тема в разделе "PHP для новичков", создана пользователем glorsh66, 16 ноя 2023.

Метки:
  1. glorsh66

    glorsh66 Активный пользователь

    С нами с:
    9 июл 2017
    Сообщения:
    247
    Симпатии:
    4
    Какие есть способы что бы ограничить время работы долгих запросов?
    Например некоторые запросы которые делают 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.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.862
    Симпатии:
    752
    Адрес:
    Татарстан
    сделать их быстрыми