Хорошо, метод, который я бы использовал, не простой, но он работает.Возможно, вы уже пробовали это, но потерпите меня.
Я получаю журнал с отметкой времени отправления каждого сообщения, времени получения каждого сообщения и времени, в которое оно было обработано.Если это связано с несколькими процессами или потоками, каждый из них должен сгенерировать журнал, а затем объединить их в общую временную шкалу.
Затем я строю график временной шкалы.(Инструмент был бы неплох, но я сделал это вручную.) Я ищу такие вещи, как 1) сообщения, повторно переданные из-за тайм-аутов, 2) задержки между временем получения сообщения и временем, в которое оно было обработано.
Обычно это определяет проблемы, которые я могу исправить в коде, которым могу управлять.Это улучшает положение вещей, но затем я делаю это снова и снова, потому что весьма вероятно, что я что-то пропустил в последний раз.
В результате система асинхронной передачи сообщений могла работать достаточно быстро.после того, как предотвратимые источники задержки были устранены.
Существует тенденция оставлять вопросы о производительности в поисках волшебных исправлений для улучшения ситуации.Но настоящее волшебное исправление состоит в том, чтобы усовершенствовать вашу диагностическую технику, чтобы она указала вам, что нужно исправить, потому что она будет отличаться от чьей-либо еще.