На разных виртуальных машинах в локальной сети работают 2 веб-службы (WS-1 и WS-2). WS-1 связывается с WS-2, а WS-2, в свою очередь, связывается с внешним веб-сервисом (WS-3) по глобальной сети. Все это общение носит синхронный характер. Мы заметили, что WS-2 занимает много времени, чтобы начать обработку запроса, отправленного WS-1, если есть задержка в получении ответа от WS-3 (скажем, все запросы обрабатываются в 5 se c WS-3 ). Благодаря такому поведению общее время задержки обработки от WS-1 до WS-2 увеличивается даже до 30 минут. Существует время считывания и время соединения, настроенное из WS-1 (время считывания: 8 сек c, время соединения: 3 сек c) в WS-2 и форма WS-2 (время считывания: 5 сек c, время ожидания соединения: 3 сек c) к WS-3.
WS-1 не может выполнить тайм-аут, если WS-2 требует много времени для начала обработки конкретного запроса, тогда как WS-2 может тайм-аут от WS-3, если ответ не получен в течение время ожидания устанавливается. Время ожидания чтения и время ожидания соединения устанавливаются в шаблоне REST Spring. Мы используем соединитель NIO2 со следующими конфигурациями. Соединитель port = "8080" protocol = "org. apache .coyote.http11.Http11Nio2Protocol" enableLookups = "false" acceptCount = "100" maxThreads = "2000" maxConnections = "- 1" connectionTimeout = "10000" minSpareThreads = "0" maxKeepAliveRequests = "1" useCaches = "true" server = "Неизвестно" xpoweredBy = "false" allowTrace = "false" сжатие = "on" compressableMimeType = "text / xml, текст / html, text / png, text / plain "redirectPort =" 8443 "Мы пробовали с соединителем BIO, но WS-2 начинает задыхаться, если ответ задерживается WS-3, даже на 5 сек c.
Есть ли способ тайм-аута запросов, поступающих с WS-1 на WS-2, для которых WS-2 занимает много времени на обработку из-за задержки с WS-3. Конфигурация, которая может применяться для обработки этого сценария, когда WS-2 зависит от отложенного ответа от WS-3. В настоящее время одновременных транзакций и общей нагрузки также очень меньше.