我在代理服务器上启用了 SSL,发现性能已经从每秒 17k 请求下降到每秒 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 可以调整得更好吗?它所花费的时间几乎与发动机本身的生成时间一样长。