SSL握手问题

Art*_*tch 5 java security performance ssl

我们的服务器应用程序在某些客户中极度缓慢.服务器重启会解决缓慢问题,但几周后它会恢复.

Java CPU总是大约100%(200%),所有其他参数都很好.研究表明,大多数CPU都被"HandshakeCompletedNotify-Thread"线程所消耗.从tcp dump我们看到SSL握手需要2-8秒,这很长,有时会抛出超时.

我们的SSL提供商是BSAFE.服务器在Linux(CentOS)上运行,640 MB堆,2个核心.使用Hibernate,spring,Oracle本地db

这种行为可能是什么原因?找到它们可以做些什么?

PS我们无法在客户处将流量切换为HTTP.

更新:当使用IP表阻止java进程的传出连接时,系统完全释放.在这种情况下释放了什么资源?我们看到SSL握手经常陷入"改变密码规范"阶段.客户端(我的java进程)尝试重用SSL会话,但服务器完全无状态,每次都会生成新的会话.

Whi*_*g34 1

您可能想查看针对 JBoss 报告的此问题(不确定您是否正在使用该问题)。该问题表明HandshakeCompletedNotify-Thread可以抛出ConcurrentModificationException,这是竞争条件的一种可能结果。其他结果包括陷入无限循环并固定 CPU 的代码,这听起来像是您的症状。如果您正在使用 JBoss,或者与导致所报告问题相关的库,我会考虑升级它。它可能会解决你的问题。