Обработка процессов с высокой загрузкой ЦП на сервере

У меня есть сервер Windows на Amazon EC2 ( m4.2xlarge ), который обрабатывает веб-запросы, выполняет некоторую обработку с использованием приложения A и возвращает результаты. Проблема в том, что это приложение A сильно нагружает ЦП и в конечном итоге занимает до 100% ЦП. Это создает две проблемы:

  1. Возврат результатов требует времени [Я абсолютно согласен с этим]
  2. Поскольку процессор загружен почти на 100%, мой сервер не может обрабатывать последующие веб-запросы и возвращает ошибку для веб-служб. . [Это проблема] Я не хочу отбрасывать вызовы веб-служб, они возвращают результаты поздно, меня устраивает.

Я пытался уменьшить привязку к ЦП для приложения A, но это мне не очень помогает. Любые другие идеи, такие как достаточно свободного ЦП для обработки веб-запросов, а оставшееся используется для обработки приложения A.

PS Меня интересует ответ с точки зрения общей настройки сервера. Не обязательно связано с AWS.

0
задан 13 April 2016 в 15:28
1 ответ

Если ваша внутренняя служба использует весь ваш ЦП, у вас есть 3 варианта:

  1. Перенести приложение на сервер с более мощным ЦП. Это может ускорить завершение процесса, интенсивно использующего ЦП.
  2. Перенесите приложение на сервер с большим количеством ЦП или ядер ЦП. Это позволит вашему клиентскому приложению получить некоторое процессорное время, пока ваш внутренний процесс работает.
  3. Разделите ваши процессы на отдельные серверы. Разместите внешнее приложение на одном сервере, а внутренние процессы - на другом.

Долгосрочный, вариант 3 дает лучшие возможности:

  • Он позволяет масштабировать ваши приложения по отдельности. Например, при необходимости вы можете добавить больше внутренних воркеров, не добавляя больше фронтендов. У вас также может быть группа t2.medium для обработки внешнего интерфейса с одним m4.2xlarge на сервере.
  • Это предотвращает вашу внутреннюю часть. процесс от вмешательства в ваш интерфейсный процесс.
3
ответ дан 4 December 2019 в 12:23

Теги

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