首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL握手问题

SSL握手问题
EN

Stack Overflow用户
提问于 2011-03-24 00:48:09
回答 4查看 7.4K关注 0票数 5

我们的服务器应用程序在一些客户那里遇到了极其缓慢的问题。服务器重启可以解决速度慢的问题,但是在几周后又会恢复。

Java CPU总是在100%左右(满分200%),所有其他参数都可以。研究表明,大部分CPU被"HandshakeCompletedNotify- thread“线程消耗。从tcp转储我们可以看到,SSL握手需要2-8秒,这是非常长的,有时会抛出超时。

我们的SSL提供者是BSAFE。服务器运行在Linux(CentOS)上,640MB堆,2核。使用Hibernate、spring、Oracle本地数据库

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

附注:我们不能在客户处将流量切换到HTTP。

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

EN

回答 4

Stack Overflow用户

发布于 2012-07-26 04:56:10

这是Sun在6u10中推出下一代Java插件时引入的一个已知错误。Oracle最终在Java 7u2中修复了这个问题,但他们还没有将其向后移植到Java 6,至少在6u33版本中是这样。

有关#7060523错误的详细信息,可以在here上找到。

票数 3
EN

Stack Overflow用户

发布于 2011-03-24 01:45:05

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

票数 1
EN

Stack Overflow用户

发布于 2011-03-24 11:44:22

您可以尝试切换到JRE默认JSSE实现,以查看是否存在BSAFE bug。

启用JSSE调试代码也很有价值(javax.net.debug属性)。

这些链接对wrt调试JSSE非常有帮助

http://download.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Debug

http://download.oracle.com/javase/1.5.0/docs/guide/security/jsse/ReadDebug.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5408767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档