Наше серверное приложение страдает от крайней медлительности у некоторых клиентов. Медлительность устраняется перезапуском сервера, однако возвращается через пару недель.
Процессор Java всегда составляет около 100% (из 200%), все остальные параметры в порядке. Исследования показали, что большая часть ЦП используется потоком «HandshakeCompletedNotify-Thread». Из tcp dump мы видим, что рукопожатие SSL занимает 2-8 секунд, что очень долго, иногда выбрасывается таймаут.
Наш поставщик SSL - BSAFE. Сервер работает на Linux (CentOS), куча 640 Мб, 2 ядра. Hibernate, используются пружины, Oracle local db
Какими могут быть причины такого поведения? Что можно сделать, чтобы их выяснить?
P.S. Мы не можем переключить трафик на HTTP у наших клиентов.
Обновление: система полностью освобождается, когда исходящие соединения процесса Java блокируются IP-таблицами. Какой ресурс освобождается в такой ситуации?
Мы видим, что SSL Handshake часто застревает на этапе «изменения спецификации шифра». Клиент (мой процесс Java) пытается повторно использовать сеанс SSL, но сервер полностью лишен состояния, каждый раз он генерирует новый сеанс.