EventLop vert.x медленно потребляет из EventBus
Мы опрашиваем сообщения от kafka (используя Executor Thread) и помещаем его в файл событий vert.x. в конце концов статьи (не рабочие) потребляют эти сообщения из EventBus.
мы измерили, что время, которое требуется каждому сообщению из шины событий Vertx после его отправки, может достигать 4 секунд на пиках.
по какой-то причине иногда требуется, чтобы Eventbus долго потреблял сообщения, но не отображал ошибку блока потока, поэтому мы не можем сказать, что задерживает ее
странная вещь, что мы не видим никаких предупреждений блока цикла событий. Что еще мы можем сделать? процессор / баран все хорошо. Единственная метрика, которая может что-то показать, это то, что:
но это ничего не говорит нам (не знаю, как обработчики событий могут быть связаны с задержкой событий)
что мы проверим, чтобы понять, что делает потребление Eventloop из EventBox vert.x медленным?
1 ответ
Вы должны попытаться измерить объем данных, которые вы отправляете через шину событий, на временной шкале и объем данных, полученных по каждой вертикалке через одну и ту же шину событий. Это может выделить проблему узкого места.
Может быть, вам стоит взглянуть на метрики jmx, предоставленные проектом vertx-dropwizard-metrics. Это может быть полезно, чтобы иметь возможность вычислить эти сроки.
Вам также может быть интересно взглянуть на Java APM, такой как glowroot, например, чтобы лучше понять, что не так.