我在Apache HTTPS服务器后面有一个SVN存储库,用于存储小型和大型(+1GB)文件。当我提交一个大文件时,传输速度约为 10MB/秒(使用 1GBit 网络线路)。当我查看服务器上的 CPU 利用率时,它已饱和,大约 85% 被 apache2 消耗,大约 15% 被磁盘驱动程序消耗。
我已经尝试禁用Apache日志记录和SSL,但这无助于提高传输速度。这让我觉得mod_dav_svn
正在使用大部分 CPU?我还尝试增加服务器上可用内核的数量(默认 = 1 个内核),但这神秘地减慢了提交速度,而 httpd 仍然使用 1 个内核。设置SVNCompressionLevel 0
也没有导致任何明显的速度改进。
有没有办法通过并行化或其他优化来显着提高传输速度?
服务器:
- Debian 9.3
- 阿帕奇 2.4.25
- libapache2-mod-svn 1.9.5
- svn 存储库:默认的 FSFS 配置(即所有在
fsfs.conf
中注释掉)。HDD 可以写入高达 30Mb/秒(硬件限制),而不会使 CPU 饱和(通过复制测试)。FS 是 NTFS,使用启用了big_writes
的ntfs-3g
,在写入 @10MB/秒时使用大约 10-15% 的 CPU。
客户:
- SVN 1.8.13
CPU:第一代英特尔酷睿@3.20Ghz
显然,如果我能以 25-30MB/秒的速度传输,我会很高兴。
有没有办法通过以下方式显着提高传输速度 并行化还是其他优化?
是的,有。但是,该问题缺少有关SVN客户端和服务器版本,服务器和FSFS存储库配置以及运行硬件的必要详细信息。很难说什么样的优化会对您的情况有所帮助。您可能希望将服务器和客户端升级到最新版本,并在服务器的配置中禁用压缩。
仅供参考:在我的测试中,VisualSVN服务器可以提供1Gbps的速度。