КОНФИГУРАЦИЯ
Веб-сервер: Nginx
Сервер приложений: Tomcat с конфигурацией по умолчанию из 200 потоков обслуживания запросов
Ожидаемое время отклика для моего сервера: < 30 секунд (существует множество зависимостей сторонних производителей)
СЦЕНАРИЙ
Каждые 10 секунд приложение должно будет генерировать токен для его использования. Ожидаемое время для создания токена составляет около 5 секунд, но поскольку его сторонняя система связана с сетью, это, очевидно, не согласуется и может опуститься до 10 секунд.
Во время процесса создания токена почти 80% входящих запросов в секунду нужно будет ждать.
ЧТО Я ВЕРЮ СЛЕДУЕТ СЛУЧИТЬ
Поскольку запросы, ожидающие генерации маркера, должны ждать "длительное" время, нет причин для повторного использования этого запроса, чтобы обслуживать другие входящие запросы в ожидании завершения процесса генерации токена.
В принципе, было бы разумно, если бы мои 20% продолжали обслуживаться. Если ожидающие потоки не используются для других запросов, будет достигнут предел обслуживания tomcat, и сервер по существу захлестнет, что то, чего я действительно не возбуждаю.
ЧТО Я ТРЕНАЛ
Первоначально я ожидал, что переход на Tomcat NIO-соединитель выполнит эту работу. Но, посмотрев на это сравнение, я действительно не надеялся. Тем не менее, я попытался заставить запросы ждать 10 секунд, и это не сработало.
Теперь я думаю о строках, которые мне нужны, чтобы отложить запрос, пока он ждет, и нужно сообщить, что этот поток можно повторно использовать. Точно так же мне понадобится tomcat, чтобы дать мне поток из его потока, когда запрос готов к перемещению вперед. Но я ослеплен тем, как это сделать или даже если это возможно.
Любое руководство или помощь?