Приложение Go Evio внезапно не отвечает. Профилирование показывает, что все потоки остановлены

# #go #profiling

Вопрос:

У нас есть приложение, основанное на Evio в docker. При запуске некоторых тестов сетевой нагрузки мы видим, что все потоки внезапно обрываются, куча сбрасывается. После нескольких секунд ожидания он продолжает выполнение в обычном режиме. Само приложение не было перезапущено, но все потоки Evio были отключены в течение ~5 секунд.

Что может вызвать такое поведение?

Конфигурация:

 Go 1.14
Ubuntu 20.04.1 LTS
Docker version 20.10.6
 

См. раздел Трассировка профилирования: трассировка профилирования

Комментарии:

1. Похоже, докер тут ни при чем. Повторное тестирование с применением голого металла. Результаты те же самые

Ответ №1:

Проблема не была в профилировании Evio или Go. После дополнительного расследования стало ясно, что все процедуры заблокированы внешней службой. В нашем случае это было соединение gRPC в режиме блокировки, когда другой экземпляр не был способен обрабатывать такое количество запросов.

Это видео также может быть полезным. Он показывает похожие симптомы и то, как их анализировать. https://www.youtube.com/watch?v=V74JnrGTwKA