如何优化Tomcat 6 SSL性能

Dan*_*man 7 networking ssl tomcat

我们在 slicehost.com 上的 Ubuntu 2GB 切片上运行 Tomcat 6

JSP 应用程序 fwiw 是 Open Clinica 3.1 我在书中几乎实现了 SSL,如您所见:

   <Connector port="8443"  
           scheme="https"   SSLEnabled="true"
           keystorePass="XXXXX" keystoreFile="XXXXX" 
    maxKeepAliveRequests="0"
    sessionCacheSize="0" sessionTimeout="0"  compression="on"   maxThreads="500"
    clientAuth="false"  sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)

问题在于 Open Clinica Java 应用程序执行大量 HTTP 请求来构建页面 - 使用 Chrome 开发人员工具,我可以看到对典型页面的 70-80 个请求。

当您为每个请求添加 SSL 握手时,额外的网络延迟只会缩短应用程序响应时间。FWIW - 客户端用户位于以色列、欧洲和美国 - 因此在用户旁边运行本地服务器的选项实际上并不可行。我知道由于 slicehose 在美国 - 到以色列的网络延迟很差,但我觉得由于服务器的 HTTP 性能可以接受到好的 - 我们应该能够做得更好。

为了尽量减少 ssl 握手 - 我定义了无限制的 sessionCacheSize 和 SessionTimeout,如上面的连接器定义所示

但是,当我在客户端运行 ssldump 时,我仍然看到很多握手正在进行,这似乎表明 Tomcat 实际上忽略了这些参数

服务器没有压力 - 有 5 个同时使用的用户,大约有 100MB 的可用内存,几乎没有交换。

Sha*_*den 5

每个资源上的 SSL 握手表明 HTTP 的保持活动功能不起作用。

使用 keep-alive,为 TCP 连接完成单个 SSL 握手,然后可以通过该单个连接请求多个资源。现代浏览器喜欢打开多个 TCP 连接以避免在缓慢加载的资源上出现瓶颈,因此您仍然会看到多次握手,但肯定比保持活动关闭的次数要少。

maxKeepAliveRequests="0" 正在关闭保持活动,我相信(我实际上找不到关于 0 做什么的文档;1 禁用保持活动并且 -1 设置没有限制 - 我假设 0 也是一个有效的禁用)。

如果您打算禁用 keep-alive,我建议您重新考虑;如果您打算将其设置为无限制,请将该选项更改为 -1。