我们的服务器应用程序在某些客户中的速度极慢。缓慢通过服务器重新启动来解决,但是在几周后它会恢复。SSL握手问题
Java CPU总是100%左右(超过200%),所有其他参数都很好。研究表明,大部分CPU被“HandshakeCompletedNotify-Thread”线程占用。从tcp dump中,我们看到SSL握手需要2-8秒,这非常长,有时会引发超时。
我们的SSL提供商是BSAFE。服务器在Linux(CentOS)上运行,640 mb堆,2个内核。休眠,弹簧使用,Oracle本地分区
什么可能是这种行为的原因?可以做些什么来发现它们?
P.S.我们无法将流量切换到客户的HTTP。
更新:当java进程的传出连接被IP表阻塞时,系统完全释放。在这种情况下释放哪些资源? 我们看到SSL握手频繁卡在“更改密码规格”阶段。客户端(我的java进程)试图重用SSL会话,但服务器是完全无状态的,每次都会产生新的会话。
你是否用jvisualvm这样的工具来分析应用程序? – Davidann 2011-03-23 16:59:45
向我们的客户(大型银行或公司)解释我们想要描述它们有点困难,但我们正朝着这个方向努力。我们通常使用Yourkit进行分析。 jvisualvm比Yourkit更好吗? – 2011-03-25 10:55:47
你有可以分析的测试系统吗? – Davidann 2011-03-25 15:10:10