如何优化Tomcat 6的SSL性能

我们在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" /> 

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

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

为了尽量减lessssl握手 – 我定义了无限的sessionCacheSize和SessionTimeout,可以在上面的连接器定义中看到

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

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

每个资源上的SSL握手都是一个信号,表明HTTP的保持活动function不起作用。

通过保持活动状态,为TCP连接完成单个SSL握手,然后可以通过单一连接请求多个资源。 现代浏览器喜欢打开多个TCP连接,以避免缓慢加载资源的瓶颈,所以你仍然会看到多次握手,但肯定比保持closures状态less。

maxKeepAliveRequests="0"closures保持活着,我相信(我实际上找不到0的文档; 1禁用保持活着和-1设置没有限制 – 我假设0也是一个有效的禁用) 。

如果你打算禁用保持活着,我build议重新考虑; 如果您打算将其设置为无限制,请将该选项更改为-1。

我会build议在前端使用带有AJP连接器的Apache反向代理。 将SSL放入Apache中,并通过专用链接(例如localhost)以明文方式连接到Tomcat。

使用Apache的优点(Web服务器有很多奇特的select)和Tomcat的优点(Java应用程序)。

保持活力显然是你将获得的最大收获,但如果你仍然需要减less延迟,你应该检查你是否使用APR本地连接器。

http://tomcat.apache.org/tomcat-6.0-doc/config/http.html#Connector比&#x8F83;