测试之间的唯一变化是更改TLS版本。 Chrome和FireFox之间的行为是相同的。
TLSv1和TLSv1.1均达到90兆字节/秒。他们在Java 6(TLSv1)和Java 8(TLSv1 / TLSv1.1)上获得了这种速度。
但是,TLSv1.2会大幅降低速度。我们得到4兆字节/秒。没有更改密码,没有其他设置等。不仅我们的开发机器,但客户报告了同样的事情,Windows操作系统,Java 8,TLSv1.2。我们使用的是OS X,Java 8,TLSv1.2。所以这似乎是大势所趋。测试正在localhost,Xeon 6核心处理器,SSD驱动器上完成。如果我们不使用HTTPS,我们会超过200MB /秒。所以4MB /秒对我们能做的事情只是一种可怕的侮辱。这不是初始连接,缓存或重新协商等。这只是原始传输速度。我没有找到任何已知的java错误,有没有人有任何猜测?
这是Chrome针对连接和密码报告的内容:
您与127.0.0.1的连接已使用现代加密技术加密。
连接使用TLS 1.2。
您与127.0.0.1的连接是使用过时的加密技术加密的。
连接使用TLS 1.1。
想法?
答案 0 :(得分:3)
讨厌回答我自己的问题,但我刚刚意识到TLS v1.2允许使用更新的密码。它是使Java 8使用软件来处理加密方面而不是使用硬件加速的密码,并导致可怕的速度。
禁用服务器上的所有GCM密码导致与使用CBC密码的chrome相同的速度。
Slow AES GCM encryption and decryption with Java 8u20
- 本