我在 Windows Server 2003 R2(企业版,x86)上安装了 CollabNet Subversion Server 1.6.2.37639,显然将其设置为作为服务运行。我只托管一个存储库,它是另一个存储库的svnsync镜像(托管在另一台机器上)。该服务运行良好,但在启动并运行几天后,它无缘无故地占用了超过 200MB 的 RAM。此外,到存储库的流量非常微不足道。没有记录故障,并且似乎没有内存泄漏,因为内存消耗从未超过该数字。
存储库的大小约为 194MB,提交/签出的数量约为每天 10 次。
似乎可以分配很多“浪费”的内存,例如用于数据库缓存。
有谁知道更多关于这个问题以及如何解决它?我想这可能是svnserve.exe完成的某种形式的数据缓存,但我在 Internet 上没有找到任何线索。
只是问你几个问题...
无论如何,我都不是 Windows 的专家,但它确实听起来像是某种缓存,或者您的存储库非常大,因此有效操作它的必要索引归类为“矮胖”:) 有没有办法,比如Linux,查看内存是如何在每个进程的基础上分配/使用的,可能是通过任务管理器或资源监视器?
编辑:这确实应该是对您的问题的评论,但评论似乎完全破坏了所有格式,我真的想要问题的要点。:-)
您可能想确定达到此内存使用水平需要多长时间。这纯粹是时间问题,还是您可以通过执行更多提交或进行更多签出等来加速该过程。内存泄漏很少见,但可能会导致性能问题。对于不同的配置,这些问题将在不同的点上表现出来。存储库达到 200MB 后会变慢吗?
在大多数情况下,内存不会“浪费”。总体上管理内存分配是操作系统的工作,但某些应用程序可能有自己的策略。在这种情况下,SVN 可能有缓存,但它也可能分配更多内存,因此它是内存的连续分配。通常,操作系统应该看到内存压力并使用一系列启发式方法来确保其他应用程序继续正常运行。
我会尝试的事情:
那很有趣 - 我还没有听说过邮件列表中 Svnserve 的大量内存使用,也许你想在那里发帖。