如何提高服务器SSL性能

blu*_*cas 6 netty sslengine

我在我的代理服务器上启用了SSL,发现性能已经从每秒大约17,000个请求降低到每秒5k请求.我按照Netty的安全聊天示例中的代码进行操作,我认为我没有做过任何不同的事情.

我写了一个虚拟服务器,看看我是否在我的代理上犯了一些错误.在正常的http模式下运行虚拟SSL服务器每秒可以提供大约50k的请求.当我在虚拟服务器上启用SSL时,每秒降低到28k个请求.

有什么我做错了吗?有什么我想念的吗?

我正在使用JDK 6编译代码,在JDK 7u4上运行.我也在使用Netty-3.5.0.我正在使用zeusbench进行测试.测试参数为:zeusbench -n 10000 -c 100 -k -C RC4_SHA"https:///"

资料来源:http://pastebin.com/iahqr3zT

编辑1:我通过JProfiler运行虚拟服务器.管道工厂中的SSLContext.createSSLEngine调用(平均)需要55,005微秒(该平均值是从该方法的540次调用计算得出的).

channelConnected中的SslHandler.handshake调用(平均)需要46,284微秒(该平均值是从该方法的540次调用计算得出的).

我知道Netty可以对createSSLEngine的调用做些什么,但SslHandler.handshake可以更好地调整吗?它的使用时间几乎和发动机本身一样长.

小智 0

使用java加密/解密真的很慢。
为了提高性能,您不应该使用带有 java 的 SSL 实现。
有几种方法可以避免java进行SSL连接:

  1. 配置在 Java 服务器前面提供 SSL 连接的代理服务器
  2. 通过 jni 在 netty 代码中使用 openssl 实现 ssl 握手库

  • 与什么相比真的很慢?有数以百万计的网站正在运行,例如带有 SSL 的 Tomcat,它们是这些断言的反例。我自己已经经营了好几年了。 (2认同)
  • 这是此答案中“java 很慢”评论的一个来源:http://netty.io/wiki/requirements-for-4.x.html#benefits-of-using-openssl (2认同)