Таймаут получения ответа от DB (PDO)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

Таймаут получения ответа от DB (PDO)

Сообщение shkarbatov »

Всем доброго дня.

Возник следующий случай. БД которая используется в проекте не критична, сам проект построен на взаимодействии с внешними API.

Соответственно есть таймаут для подключения - это 5 сек.

Код: Выделить всё

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=xx.xx.xx.xx;dbname=db_name',
    'username' => 'user,
    'password' => '',
    'charset' => 'utf8',
    'attributes' => [
        PDO::ATTR_TIMEOUT => 5
    ]
];
Но это таймаут на подключение к БД. Но как быть, если я уже подключился и в этот момент сервер ушел в своп, получается, что я буду ждать до тех пор, пока не получу ответа.

В нете как вариант нашел следующее:

Код: Выделить всё

ini_set("default_socket_timeout", 5);
Но не кошерно выходит.

Может кто-то уже сталкивался с таким?
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

Re: Таймаут получения ответа от DB (PDO)

Сообщение shkarbatov »

Господа, есть идеи?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Таймаут получения ответа от DB (PDO)

Сообщение zelenin »

замечаю, что у тебя много вопросов, связанных с базой, с которыми обычно никто не сталкивается. ты перфекционнист или пытаешься из сервера выжать по максимуму?
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

Re: Таймаут получения ответа от DB (PDO)

Сообщение shkarbatov »

:)
Скажем так, комплекс очень важный, даже простой в минуту несет последствия.
В связи с вышеуказанной проблемой, был сбой комплекса.
Хочется избежать таких проблем в будущем, так как суть проблемы понятна, а вот решение пока смутное.
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: Таймаут получения ответа от DB (PDO)

Сообщение dmg »

имхо. надо решать проблему на стороне сервера.
Ушел в своп? Т.е. какой то сервис забил всю оперативку и она пошла в своп?
Так и ловите этот момент. или избегайте утечки памяти или добавьте оперативки.
shkarbatov
Сообщения: 423
Зарегистрирован: 2012.12.10, 14:19
Откуда: Россия

Re: Таймаут получения ответа от DB (PDO)

Сообщение shkarbatov »

>> имхо. надо решать проблему на стороне сервера.
Безусловно со стороны БД этот вопрос нужно проработать.
Но с самим подходом я не согласен. Так как не критичный для проекта комплекс становится критичным.

Вы отдаете работоспособность своего комплекса в чужие руки.
При сбое любого внешнего комплекса (коим в данной случае выступает БД), проект должен вести себя корректно. Если сервис критичный - показать ошибку, если нет обработать ее и продолжить работу.
Ответить