SvnServe.exe消耗200 + MB的内存

我在Windows Server 2003 R2(企业版,x86)上安装了CollabNet Subversion Server 1.6.2.37639,显然将其设置为作为服务运行。 我只托pipe一个存储库,这是另一个svnsync镜像(托pipe在另一台机器上)。 该服务运行良好,但经过几天的启动和运行,它占用了超过200MB的RAM没有明显的原因。 此外,存储库的stream量是微不足道的。 没有任何故障logging,并且似乎没有内存泄漏,因为内存消耗永远不会超过这个数字。

版本库的大小约为194MB,提交/签出的数量大约是每天10个。

看起来相当多的“浪费”的内存,可以分配,例如,数据库caching。

有谁知道更多关于这个问题,以及如何解决? 我想这可能是由svnserve.exe完成的某种forms的数据caching,但我在互联网上找不到线索。

只是几个问题给你…

  • 你的Subversion版本库有多大?
  • 每小时,每天,每周多less次提交,结算和更新?
  • 另一台机器处理多lessstream量?

我真的不是Windows的专家,但它听起来像某种caching, 或者你的存储库是相当大的,所以必要的索引有效地操作它分类为“块”:)有没有办法,像Linux,看看如何分配/使用每个进程的内存,也许通过任务pipe理器或资源监视器?

编辑:这应该真的是你的问题的评论,但评论似乎完全破坏所有的格式,我真的想要的问题要点。 🙂

你可能想要确定要达到这个级别的内存使用的时间。 这是纯粹的时间问题,还是可以通过执行更多的提交或者执行更多的签出等来加速进程。内存泄漏是罕见但可能的,通常会导致性能问题。 这些问题将在不同的configuration下在不同的点显示出来。 资料库达到200MB后会变慢吗?

在大多数情况下,记忆不是“浪费”的。 整体上pipe理内存分配是操作系统的工作,但是一些应用程序可能有自己的策略。 在这种情况下,SVN可能有一个caching,但它也可以分配更多的内存,以便它是一个连续的内存分配。 一般来说,操作系统应该看到内存压力,并使用一系列的启发式方法来确保其他应用程序继续正常运行。

我会尝试的事情:

  • 使用性能监视器(perfmon.exe)捕获内存使用情况的各种统计信息
  • 查看每个存储库的日志以查看发生了哪些types的操作。
  • 重新启动服务并运行大量的签出,提交等使用自动化脚本。 在尝试混合使用这两种types的操作之前,分别进行这些操作。 如果您只有另一个subversion服务器的纯副本,这可能不太适用。

这很有趣 – 我没有听说过邮件列表中有大量的Svnserve的内存使用情况,也许你想在那里发帖 。