Как бороться с нагрузкой socket.io?

Добрый день всем
Проблема в том что когда идет резкий наплыв на сайт socket.io поднимает CPU до 100% и начинаются проблемы(Socket.io + redis sub pub) Что нужно делать? Какие Ваши советы?

Все на одном сервере
Технологии: php-fpm,nginx,redis,node,socket.io

UPD: Процессор 16 X QEMU Virtual CPU version 2.5+ 2593.748 MHz
Оперативная память 16 GB
UBUNTU 16.04

Проблемы идут уже тогда когда соединений 1000
Спасибо
  • Вопрос задан
  • 1113 просмотров
Решения вопроса 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Запущен-то в один процесс скорее всего сервер сокетов?
Делайте шардинг чтобы в несколько потоков запросы обрабатывались. На том же сервере даже.
Потому что скорее всего только одно ядро загружено у вас.
Особо вариантов нет кроме этого.

Если всё-таки весь сервер нагрузка(в чем сомневаюсь), то шардировать на разные сервера уже.

Ну для профилактики конечно стоит код проверить на узкие места, хотя 1000 коннектов для одного ядра уже нормально, особенно если там есть какая никакая логика. Так что это потолок просто для одного ядра/процесса скорее всего на вашем сервере.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
1 Режим записи в логи socket.io - отладочный.
2 Режим записи логов приложений (php-fpm,nginx,redis,node) - отладочный.
3 Анализ логов socket.io.
4 Анализ логов приложения (php-fpm,nginx,redis,node).
5 Анализ других логов (maillog, messages, secure, auditd, какая у вас там база).
6 Анализ загрузки системы (htop, iotop, ...).
7 Замена ОС на более свежую со стабильным ядром, стабильными приложениями, стабильными обновлениями.
8 Профилирование ОС под соответствующий тип нагрузки.
9 Профилирование приложений под соответствующий тип нагрузки.
10 Тестирование под нагрузкой каждого приложения и всего сервера в целом.
11 Планирование переезда на выделенный сервер. С нормальным железом. У тебя может быть жадный сосед, который садит нещадно ресурсы. Может ты и есть тот самый жадный сосед, поэтому админы прикрутили твои возможности. Может быть жадный хозяин VDS и вы там сражаетесь между собой за недостающие ресурсы.

Смотреть в сторону докера или LXC бесполезно. Особенно в случае с виртуалкой.
Ответ написан
Ваш ответ на вопрос

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

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