У меня очень странное поведение моего API, которое публикует сообщения на сервер RabbitMQ, которое я не могу объяснить, и мне действительно нужна помощь.
Контекст: у меня есть 2 приложения, оба публикуются на одном и том же сервере RabbitMQ, разные очереди, но очереди настроены одинаково, поэтому я не буду вдаваться в подробности их конфигураций.
Оба отправляют сообщения одинаково. У меня настроен массовый транзит при запуске, я использую ISendEndpointProvider, чтобы получить конечную точку отправки, а затем отправить сообщение. Каждая из этих очередей используется разными потребителями, потребители живут в другом приложении, но оба находятся в одном приложении. Опять же, конфигурация массового транспорта одинакова для обоих.
Консольное приложение фоновых процессов:
hangfire создает задания;
каждое задание получает некоторые данные и начинает помещать все данные в одну и ту же очередь.
Операция отправки занимает в среднем 20–40 мс, есть пики, но они случайны и не выходят за рамки 300-400 мс
объемы, которые эти задания ставят в очередь, в среднем в 3 раза превышают объем, который API должен поставить в очередь в любой момент времени
Api:
1 конечная точка
для каждого запроса, я просто беру сообщение и отправляю его в очередь, вот и все. all
И вот здесь становится круто. В определенные интервалы времени среднее время, необходимое для завершения операции отправки, превышает 10 000 мс. А когда идет дождь, это влияет на все операции отправки в API.
Я просмотрел несколько мест:
я не могу связать это с количеством получаемых запросов, я зарегистрировал одинаковое количество запросов в разные моменты времени, иногда операция отправки занимает много времени, иногда она занимает в среднем 20-40 мс -> поэтому я на самом деле не могу связать его с пулом потоков, параллелизмом или каким-либо истощением, но, пожалуйста, скажите мне, если вы думаете, что это может быть виновником
если оно исходит от сервера RabbitMQ, я не понимаю, почему консольное приложение не страдает, когда оно публикует больше сообщений. и с сервером, кажется, все в порядке.
На данный момент единственная разница - это сам тип проекта и то, как может работать время жизни. Но я не могу на что-то указать, потому что пункт 1. меня как-то сбивает с толку. И мне очень нужны предложения. Заранее спасибо!
У меня очень странное поведение моего API, которое публикует сообщения на сервер RabbitMQ, которое я не могу объяснить, и мне действительно нужна помощь. Контекст: у меня есть 2 приложения, оба публикуются на одном и том же сервере RabbitMQ, разные очереди, но очереди настроены одинаково, поэтому я не буду вдаваться в подробности их конфигураций. Оба отправляют сообщения одинаково. У меня настроен массовый транзит при запуске, я использую ISendEndpointProvider, чтобы получить конечную точку отправки, а затем отправить сообщение. Каждая из этих очередей используется разными потребителями, потребители живут в другом приложении, но оба находятся в одном приложении. Опять же, конфигурация массового транспорта одинакова для обоих. Консольное приложение фоновых процессов: [list] [*]hangfire создает задания; [*]каждое задание получает некоторые данные и начинает помещать все данные в одну и ту же очередь. [*][b]Операция отправки занимает в среднем 20–40 мс, есть пики, но они случайны и не выходят за рамки 300-400 мс[/b] [*][b]объемы, которые эти задания ставят в очередь, в среднем в 3 раза превышают объем, который API должен поставить в очередь в любой момент времени[/b] [/list] Api: [list] [*]1 конечная точка [*]для каждого запроса, я просто беру сообщение и отправляю его в очередь, вот и все. all [*][b]И вот здесь становится круто. В определенные интервалы времени среднее время, необходимое для завершения операции отправки, превышает 10 000 мс. А когда идет дождь, это влияет на все операции отправки в API.[/b] [/list] Я просмотрел несколько мест: [list] [*]я не могу связать это с количеством получаемых запросов, я зарегистрировал одинаковое количество запросов в разные моменты времени, иногда операция отправки занимает много времени, иногда она занимает в среднем 20-40 мс -> [b]поэтому я на самом деле не могу связать его с пулом потоков, параллелизмом или каким-либо истощением, но, пожалуйста, скажите мне, если вы думаете, что это может быть виновником[/b] [*]если оно исходит от сервера RabbitMQ, я не понимаю, почему консольное приложение не страдает, когда оно публикует больше сообщений. и с сервером, кажется, все в порядке. [/list] На данный момент единственная разница - это сам тип проекта и то, как может работать время жизни. Но я не могу на что-то указать, потому что [b]пункт 1.[/b] меня как-то сбивает с толку. И мне очень нужны предложения. Заранее спасибо!