Что я узнал на этой неделе

  • Размер страницы действительно имеет значение для достижения высокой производительности с узловых серверов. Мне удалось удвоить пропускную способность (запросов в секунду) приложения nodejs, уменьшив размер страницы всего на 25%.
  • Эти универсальные приложения являются дорогостоящими, если начальное состояние вашего приложения огромно, подумайте о том, чтобы сначала отправить обычную страницу, затем начальное состояние позже через Ajax, а затем гидратировать, если выборка состояния прошла успешно. Это определенно требует, чтобы основной опыт вашего приложения был свободен от javascript (я предполагаю, что именно поэтому вы для начала выполняете рендеринг на стороне сервера).
  • Следите за пробелами в полезной нагрузке, они могут увеличить размер страницы на несколько килограммов и снизить производительность.
  • Интеграция Stackdriver в облако Google — это подарок бога. Я использовал его для извлечения журналов Nginx на панель мониторинга для отслеживания сетевых задержек между запросами.
  • Если одни и те же данные создают одно и то же представление в приложении, отображаемом на стороне сервера, вместо этого рассмотрите возможность кэширования представления, сэкономьте несколько циклов ЦП или, что еще лучше, вставьте обратный прокси-сервер (например, Nginx) перед вашим приложением nodejs и установите свой Cache-Control заголовок, чтобы соответствовать времени жизни ваших данных, поверьте мне, это уменьшит нагрузку на ваши серверы приложений.

Вещи, на которые у меня пока нет ответов

  • Как лучше всего масштабировать Nodejs в кластере Kubernetes? 1) масштабировать по горизонтали? много одноядерных модулей? 2) Режим кластера Nodejs на нескольких многоядерных модулях?
  • Есть ли преимущество использования HTTP 2, если у вас есть обратный прокси-сервер перед вашим приложением, если ваше приложение обслуживает только визуализированный HTML.