Apache上的SSL似乎会显着影响WebDAV的性能

我使用运行在Windows Server 2008 R2上的Apache 2.2作为WebDAV服务器,以便客户端上传大型媒体文件(大约100-2000MB)。 我发现当我启用了SSL(openSSL 0.9.8o)并使用HTTPS上传时,吞吐量大约是13Mbps,但是当我禁用它并使用HTTP时,我获得了大约80Mbps的速度。 我不明白为什么会发生这种情况,因为我的理解是SSL的工作是在连接开始的时候完成的。

如果它帮助我正在使用的客户端是命令行cURL,这里是命令:

curl -k -f -u digital:recorder -T 00320120321101048_ch1.mkv http://mediaserver/webdav/ curl -k -f -u digital:recorder -T 00320120321101048_ch1.mkv https://mediaserver/webdav/ 

有没有人有任何想法,为什么性能如此剧烈的影响启用SSL?

干杯。

更新:在Windows 7客户端上不存在问题,所以这只发生在XP上。 这至less可以确定问题出在客户端。 我从两个系统运行完全相同的命令行,但它只影响WinXP。 有谁知道这可能是为什么? XP是以某种方式削弱了SSL上传速度?

我也在Fedora Linux上运行testing。 所以现在这个问题已经被更加严密地定义了:在Linux和Windows 7上,同一版本的cURL + OpenSSL上传相同的文件到同一个服务器上是快速的,而在Windows XP上是非常慢的。

任何人都可以帮忙,因为我真的碰壁了!

SSLencryption是一项CPU密集型任务。 连接开始后,“繁重的SSL工作”不会完成,但必须对整个file upload进行encryption。

在启用和不启用SSL的情况下检查服务器的CPU消耗,您将看到很大的差异。

那么答案就是这是Windows XP处理SSL数据包的一个问题。 奇怪而真实。 最后我们自己修改了cURL库来避免这个问题。

对于任何有这个问题的Apache作为WebDAV目标,然后我发现另一个select是使用SSLCipherSuite指令将encryption级别更改为中等(默认为高)。 这意味着它使用128位RSA而不是256位AESencryption,从而将吞吐量提高到几乎不encryption的速度级别。 这可能会或可能不会帮助IIS服务器,因为我还没有机会尝试。