Проблема производительности IBM Mobilefirst 7.1 для переадресации вызовов с адаптера - PullRequest
0 голосов
/ 05 сентября 2018

Мы столкнулись с проблемой производительности адаптера IBM Mobilefirst. Мы используем IBM Mobilefirst версии 7.1.0.0-IF201807271401. Когда сила пользователя увеличивается до 1000, то адаптеру потребуется более 50 секунд, чтобы перейти на службу ESB, где, если сила пользователя меньше 20, то адаптер достигнет ESB в течение секунды.

Пожалуйста, ознакомьтесь с подробностями ниже.

Архитектура приложения:

Приложение <---> Адаптер <---> ESB <---> База данных

Case 1: Users strength is less then 20 users
Request made in App: 10:15:00 AM
Request reached in Adapter: 10:15:00 AM  
Request reached in ESB: 10:15:00 AM

Case 2: Users strength is increased towards 1000
Request made in App: 10:15:00 AM
Request reached in Adapter: 10:15:00 AM  
Request reached in ESB: 10:15:55 AM

Мы сделали лучшую аппаратную настройку для этого проекта. Нет проблем с RAM или CUP. Мы также наблюдали, когда сила пользователя достигает 1000, тогда загрузка ЦП составляет менее 15%.

Пожалуйста, дайте нам знать, почему адаптер получает больше времени, когда сила пользователя увеличивается, а также разрешение для того же.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы, кажется, натолкнулись на классический случай конкуренции за ресурсы. Вы не упомянули, какие типы адаптеров вы используете и свой сервер приложений, в частности, сколько узлов.

Предполагая 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 мог быть освобожден.

...