Вы, кажется, натолкнулись на классический случай конкуренции за ресурсы. Вы не упомянули, какие типы адаптеров вы используете и свой сервер приложений, в частности, сколько узлов.
Предполагая Javascript HTTP-адаптеры (вы подключаетесь к ESB), обратите внимание, что он имеет параллелизм по умолчанию 50. Это означает, что максимум 50 одновременных подключений к бэкэнду могут быть открыты из адаптера. Кроме того, при условии, что у вас есть два узла сервера приложений, на которых развернуто ваше время выполнения, тогда становится возможным 100 одновременных подключений к вашему ESB. Это относится ко всем HTTP-адаптерам JavaScript.
Если в систему вошли 1000 пользователей и все они используют один и тот же адаптер, то с этого адаптера к ESB можно установить только 100 одновременных подключений. Это означает, что остальным придется ждать завершения существующих подключений. Вы не упомянули максимальный параллелизм, который может поддерживать ваш ESB. Кроме того, ваш бэкэнд. Если ESB не может поддерживать 100 одновременных пользователей, то соединения будут ограничены на ESB. То же самое может случиться на бэкэнде. Это означает, что фактические запросы, поступающие с мобильных устройств, ожидают. Теперь не все пользователи будут вызывать один и тот же адаптер. Запросы могут быть распределены по всем адаптерам, и если все адаптеры проходят через один и тот же ESB, то ESB будет загружаться все время и может не иметь достаточного количества свободных соединений.
Ваши собственные наблюдения показывают, что система работает нормально на 20 одновременных пользователей, но не масштабируется для поддержки 1000. Развертывания только на лучшем оборудовании недостаточно. Вам необходимо настроить сервер приложений, адаптеры, серверные части и ESB для обеспечения высокого параллелизма.
Проверьте, сколько одновременных соединений может поддерживать ваш ESB. Подсчитайте, сколько времени потребуется вашим бэкэндам, чтобы ответить. Найти общее время оборота для запроса на бэкэнд и обратно под нагрузкой. И тогда размер и настройка соответственно. Если вы установили очень большое число для атрибута 'maxConcurrentConnectionsPerNode' в своем адаптере, то уменьшите его, чтобы оно соответствовало возможностям вашего ESB. Кроме того, проанализируйте и установите соответствующие значения подключения и считайте значения тайм-аута для ваших адаптеров, чтобы время ожидания слишком длинных соединений истекло, а поток Webcontainer мог быть освобожден.