Основная проблема
Такие проблемы всегда проблема ресурсов .Пока все компоненты имеют достаточно ресурсов и отвечают быстро, все в порядке.Как только один из них сталкивается с ограничением ресурсов, он становится медленным.
В сценарии JMeter-SoapUI преднамеренная задержка SoapUI равна , обработанной JMeter .Поскольку для ответа SoapUI требуется больше секунды, запросы JMeter остаются открытыми в течение этого времени.Если пул потоков JMeter для запросов исчерпан (все потоки ожидают ответа от SoapUI), он не может масштабироваться дальше.Исходя из ваших мер, размер пула потоков может быть 100.
Затем вы поставите верблюда в середину.При этом вы вводите новые пулы потоков .Должен быть один для приема запросов (CXF) и, вероятно, тот, который отправляет запросы (Camel HTTP).Теперь задержка SoapUI также должна обрабатываться этими пулами .Та же ситуация, но теперь пулы потоков компонента Camel являются ограничением.
Давайте предположим, что пул потоков для HTTP-запросов Camel по умолчанию равен 10.JMeter начинает отправлять запросы.Если JMeter отправляет новые запросы быстрее, чем SoapUI отвечает , 10 потоков для отправки HTTP-запросов в SoapUI очень быстро все заняты (ожидают SoapUI).
Поступают новые запросы JMeter, но новые HTTP-запросы к SoapUI невозможны до тех пор, пока один из потоков снова не освободится.Около 8 параллельных запросов (по вашим меркам) кажется разумным в этом случае.
Таким образом, очевидно, что если вы хотите обслуживать 100 запросов в секунду в подобном сценарии, вам нужно настроить все задействованные пулы потоков для обработки этого.И вы также должны точно настроить различные таймауты (CXF, Camel HTTP).
Ваш код
Одна вещь, которую я заметил в вашем коде, заключается в том, что вы используете Camel HTTP-компонент для своих конечных точек.Этот компонент использует HTTP-клиент Apache 3.x .
Если вы хотите использовать более современный клиент Apache HTTP , вы должны использовать Camel HTTP4компонент (4, потому что он использует Apache HTTP-клиент 4.x).Я не знаю, имеет ли это большое значение, но старая версия объявляется как «конец жизни» с годами.
Другое дело, тайм-ауты.Вы пишете, что устанавливаете время ожидания Camel на 30 секунд.Но это, вероятно, не тайм-аут CXF или HTTP-клиента Apache.У клиентов HTTP несколько тайм-аутов: для установления соединения может потребоваться слишком много времени, а для получения ответа может потребоваться слишком много времени.