Почему несколько процессов Ruby на сервере EC2 вызывают 100% загрузку ЦП?

У меня есть приложение Rails, которое большую часть времени загружает процессор на 100%. Я не могу понять, почему на сервере такая большая нагрузка. Я использую веб-сервер Puma с конфигурацией по умолчанию и выполняю несколько фоновых заданий с использованием драгоценного камня запрещенный прием. Есть 7 файлов, в которых используются работы по перфорации с 5 рабочими:

include SuckerPunch::Job 
workers 5

Я выполнил запрос top -i и обнаружил, что на сервере запущены следующие процессы. Я вижу несколько команд Ruby на сервере. Может ли кто-нибудь сказать мне, нормально ли это поведение на сервере или что-то не так?

Почему несколько процессов Ruby на сервере EC2 вызывают 100% загрузку ЦП?

Я не уверен, какой сервер приложений вы используете и его конфигурацию. Думаю, у вас много рабочих настроено. Вы должны предоставить дополнительную информацию о сервере приложений (пума? Пассажир? Единорог?)

arieljuod 25.08.2018 05:47

Я использую сервер приложений Puma, и я также использую гем sucker punch для нескольких фоновых заданий.

Bloomberg 25.08.2018 06:18

Итак, какой конфиг у Puma? сколько рабочих вы используете? а что с конфигом sucker_punch? Кажется, у вас слишком много рабочих на обоих

arieljuod 25.08.2018 06:31

Я использую конфигурацию PUMA по умолчанию на сервере AWS EC2 и конфигурацию sucker-punch по умолчанию. Но есть 7 файлов, в которых используется работа по перфорации с 5 рабочими в каждом. Я добавил подробную информацию о самом вопросе для удобства чтения

Bloomberg 25.08.2018 08:33

запустите top -c, он добавляет столбец с дополнительной информацией о команде, создавшей каждый процесс

arieljuod 25.08.2018 16:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
727
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Некоторые способы уменьшить конкуренцию за ресурсы

Загрузка вашего пользовательского пространства высока (~ 48%), поэтому вы, вероятно, захотите уменьшить количество рабочих в своем веб-приложении, увеличить количество процессоров, доступных на вашем экземпляре, перейти на версию Ruby с лучшим параллелизмом и реальная многоядерная поддержка (например, Rubinius или JRuby) или некоторая комбинация этих опций. В зависимости от того, что на самом деле делает ваш код, вам также может потребоваться изменить архитектуру приложения, чтобы разгрузить дорогостоящий ввод-вывод с сервера приложений.

Кроме того, ваше время кражи довольно велико (~ 41%), поэтому ваш экземпляр EC2, вероятно, перегружен. Простое перемещение приложения в менее загруженный экземпляр может высвободить достаточно ресурсов, чтобы сократить время ожидания приложения.

Спасибо, Тодд. Ваше понимание пользовательского пространства и украденного времени помогло найти направление, которое снижает загрузку ЦП.

Bloomberg 29.08.2018 06:32

Другие вопросы по теме