Позвольте мне начать с того, что я понимаю, что производительность - это сложно, и даже сложнее через форум, но я надеюсь, что кто-то может указать мне на следующий шаг в выяснении этой проблемы, которая у нас есть в производстве на Ruby на Окружение Rails. Я наблюдал это некоторое время, но теперь, когда наше использование снизилось из-за Covid, стало более ясно, что это не проблема пользовательской нагрузки, а что-то в инфраструктуре.
![NewRelic Transaction Time](https://i.stack.imgur.com/wF43K.png)
День начинается хорошо, но в полдень все замедляется все больше и больше ... пока перезагрузка пассажира не проясняет все на 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](https://i.stack.imgur.com/nmWOe.png)
, но если я перезапускаю пассажира и снова запускаю, тот же код займет меньше секунды. И это только тот пример, который я вижу по сегодняшним следам. Вчера казалось, что проблемы возникли с другим контроллером.
Какие-нибудь рекомендации по дальнейшим действиям по устранению неполадок? Я не знаю, следует ли мне инструментировать конкретный контроллер c, потому что это не только один метод, вызывающий проблему (afaik). Я думаю, что вижу симптомы, а не причину - и не знаю, как узнать, что на самом деле происходит.
Заранее спасибо - Майк
Rails 4.2.11.1 Ruby 2.4. 9 Пассажирский 6.0.5 на Apache 2.4.43