java - SSL 握手问题

标签 java performance security ssl

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

Java CPU 始终在 100% 左右(满分 200%),所有其他参数都很好。研究表明,大部分 CPU 被“HandshakeCompletedNotify-Thread”线程消耗。从 tcp dump 中我们看到 SSL 握手需要 2-8 秒,这很长,有时会抛出超时。

我们的 SSL 提供商是 BSAFE。服务器在 Linux(CentOS) 上运行,640 mb 堆,2 核。 Hibernate,spring都用到了,Oracle local db

这种行为的原因可能是什么?怎样才能找到它们?

附言我们无法将客户的流量切换为 HTTP。

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

最佳答案

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

可以找到有关错误 #7060523 的详细信息 here .

关于java - SSL 握手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5408767/

相关文章:

java - 语言切换 - l10n I18n

javascript - Firefox 中的大子字符串比 Chrome 快约 9000 倍 : why?

java - 按位置动态对客户进行分组,限制最大规模

c# - 无法解密 RSA 加密 key

javascript - 如何验证请求是否来自特定的 Web 应用程序

java - ProGuard 给出不清楚的错误

java - Java:WAITING boolean 值变为真实

java - 如何测试从文件和路径读取(使用 junit)?

mysql - Laravel Eloquent 需要 6-12 秒返回结果

iphone - 加密存储在 iCloud 中的文档的方法