Задать вопрос
makasimka_eliseev
@makasimka_eliseev

Что произойдет, если я подключусь к синхронному запросу в базе данных в асинхронном сокет-сервере Workerman?

Как именно это скажется на системе? Очень интересно знать мнения, сам я, на данный момент, очень туговато понимаю в этих синхронно-асинхронных темах.

Интересует именно ответ что будет, если я буду синхронно подключаться к базе данных Mysql в асинхронном сокет-сервере, который построен на Workerman + Socket IO.

Все это дело на PHP.
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Асинхронное программирование
Седой и строгий
Не знаю как устроен именно Workerman, но во всех реализациях асинхронных движков, о которых я когда-либо слышал, блокирующий вызов в асинхронном коде приводит или к деградации производительности всей системы или вообще к зависанию.
Ответ написан
Комментировать
Если у вас в worker'е случается синхронный запрос, то воркер подвисает до окончания этого запроса. Фактический результат зависит от разных параметров: того, сколько имеется воркеров, как запросы распределяются по воркерам, какая нагрузка на сервис. Если такое происходит на достаточно большом проценте запросов и сервис достаточно нагружен, то в какой-то момент начнут висеть все воркеры. По мере увеличения нагрузки это будет выглядеть так: сначала (пока количество воркеров больше количества одновременных запросов) может вообще не проявляться, потом появится большой разброс во времени обработки клиентских запросов, а затем все умрет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы