Проблемы с производительностью в приложении Ruby on Rails - PullRequest
0 голосов
/ 17 июня 2020

Позвольте мне начать с того, что я понимаю, что производительность - это сложно, и даже сложнее через форум, но я надеюсь, что кто-то может указать мне на следующий шаг в выяснении этой проблемы, которая у нас есть в производстве на Ruby на Окружение Rails. Я наблюдал это некоторое время, но теперь, когда наше использование снизилось из-за Covid, стало более ясно, что это не проблема пользовательской нагрузки, а что-то в инфраструктуре.

NewRelic Transaction Time

День начинается хорошо, но в полдень все замедляется все больше и больше ... пока перезагрузка пассажира не проясняет все на 24/48/96 часов.

Проверка очевидных пунктов:

  • Проверяется использование памяти сервера. Использование памяти увеличивается за это время с 20% -30%. Так что некоторое увеличение, но определенно не замена (я видел это раньше).
  • Использование ЦП аналогично. Он увеличивается с 1% в 6 утра до 18% в худшем случае, но все еще находится в пределах возможностей сервера.
  • Использование пассажиров. Глядя на статус пассажира, никогда не бывает невыполненных запросов. Из-за covid наша пользовательская база не работает, и даже при самой медленной работе я вижу 2-3 пассажирских процесса, обслуживающих контент (из ~ 40 макс.), И нет длительных запросов.
  • С задержкой. рабочие задания (3) работают, но в данный момент рабочих мест нет. Похоже, они не используют значительное количество процессора или памяти.
  • При просмотре журналов apache / rails ничего не видно. Никаких DoS-атак, никакой неожиданной нагрузки.
  • Если посмотреть на длительные транзакции в NewReli c, есть некоторые, которые занимают 20-30-50 сек c, но после перезапуска пассажира они возвращаются на 1-3 се c как обычно. Все время находится в Ruby.

Так вот здесь я застрял. Я вижу, в чем проблема (185 se c): Example of one long-running transaction segment

, но если я перезапускаю пассажира и снова запускаю, тот же код займет меньше секунды. И это только тот пример, который я вижу по сегодняшним следам. Вчера казалось, что проблемы возникли с другим контроллером.

Какие-нибудь рекомендации по дальнейшим действиям по устранению неполадок? Я не знаю, следует ли мне инструментировать конкретный контроллер c, потому что это не только один метод, вызывающий проблему (afaik). Я думаю, что вижу симптомы, а не причину - и не знаю, как узнать, что на самом деле происходит.

Заранее спасибо - Майк

Rails 4.2.11.1 Ruby 2.4. 9 Пассажирский 6.0.5 на Apache 2.4.43

...