Назад | Перейти на главную страницу

Как вставить случайную задержку для запроса на подключение (tomcat)?

На Tomcat8.5 я использую определенное приложение Java, которое вызывает код C ++ через JNI, который включает длинные критические разделы (занимает примерно 1 секунду). Поэтому, если сервер случайно получает сразу много (~ 1000 или более) запросов от клиентов одновременно, JVM вызывает множество рабочих потоков, что вызывает очень долгую задержку для клиента (несколько минут).

Чтобы предотвратить описанную выше ситуацию, как мне настроить параметры сервера (Windows 2016), Tomcat или JVM?

Приложение Java и C ++ (DLL) представляют собой черный ящик, и я не могу изменить их код.

Моя идея состоит в том, чтобы каким-то образом вставить задержки (случайные миллисекунды) для входящих запросов до того, как рабочие потоки Tomcat примут их, чтобы критическая секция была разбита.

Пожалуйста, дайте мне любые предложения не только по сети, но и по конфигурации Tomcat.

Это не сработает. Если за один раз поступает ~ 1000 запросов и для обработки каждого запроса требуется критическая секция ~ 1 с, нет никаких сомнений в том, что для обработки всех этих запросов потребуется ~ 1000 секунд. Задержка в несколько миллисекунд не поможет.

Не зная подробностей того, что делает эта DLL, трудно предложить альтернативные подходы, которые могут сработать.