如何调优Apache Subversion的MS Windows

如何调整适用于MS Windows的Apache Subversion

在我们的企业客户中,在Windows上使用Apache是​​很少见的,大多数人选择在其中一个Linux上托管Subversion Apache服务器。

在Windows是Subversion Apache服务器的操作系统的情况下,Apache httpd进程的管理员常常感到内存消耗过高,极端情况下导致Apache服务器关闭。

Windows的所有subversion二进制文件仅提供32位版本的Apache。 Windows上的Apache作为一个进程运行,子线程处理http连接。 这意味着Apache在Windows上可用的内存总量始终限制在2 Gb。 将其与Apache模块的已知内存泄漏相结合,很容易看出为什么Windows上的Apache Subversion服务器可能会频繁死机。

值得庆幸的是,有一些方法可以最大限度地减少Apache内存的出现并为Subversion服务器实现长时间的正常运行时间。 以下是一些关键的Apache配置指令,这对于Windows上的Apache Subversion服务器是最佳的:

KeepAlive On

KeepAliveTimeout 15

MaxKeepAliveRequests 500

MaxRequestsPerChild 400

MaxMemFree 8000

依次看每个指令:

KeepAlive On - 允许连接重复使用多个请求。 这导致更好的性能,因为存在与建立新连接相关联的开销。

KeepAliveTimeout 15 - 如果15秒后没有新的请求,则关闭连接。 我们可以增加这个值来提高客户端的性能 - 但是这样做会使得子线程的持续时间更长。

MaxKeepAliveRequests 500 - 每个连接在关闭之前最多可以服务500个请求。

MaxRequestsPerChild 400 - 每个子线程在被杀死之前被允许为400个连接提供服务。

MaxMemFree 8000 - 每个线程在被强制释放之前可以保留8Mb的可用内存。

上述设置背后的策略是限制每个线程的使用寿命,因此如果有内存泄漏,那么当线程被杀死时,内存被释放。

根据安装的Apache Subversion的确切分布情况,通常情况下,默认的Apache配置允许每个线程永远生存,并且可以保留一定数量的可用内存 - “不是最好的”。

应用上述设置后,每个线程将在被杀死之前为MaxRequestsPerChild * MaxKeepAliveRequests = 200000个请求提供服务,并且每个线程一旦累积了8Mb就被强制放弃任何空闲内存。

MaxKeepAliveRequestsMaxRequestsPerChild可能需要微调,具体取决于用户如何报告性能和Apache消耗多少内存,目的是在数据传输速度和Apache内存大小之间找到可接受的折中。

这个“如何”是由Subversion Sherpa - Jonathan Paul在WANdisco写的

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏