Я установил CollabNet Subversion Server 1.6.2.37639 на Windows Server 2003 R2 (Enterprise, x86) и, очевидно, настроил его для работы как службы. Я размещаю только один репозиторий, это svnsync зеркало другого (размещенного на другой машине). Служба работает хорошо, но через несколько дней после запуска она без видимой причины занимает более 200 МБ ОЗУ. Кроме того, трафик в репозиторий очень незначителен. Никаких сбоев не зарегистрировано, и утечки памяти не наблюдается, так как потребление памяти никогда не выходит за рамки этого значения.
Размер репозитория составляет около 194 МБ, а количество коммитов / проверок - примерно 10 в день.
Кажется, довольно много «потраченной впустую» памяти, которую можно было бы выделить, например, для кэша базы данных.
Кто-нибудь знает больше об этой проблеме и как ее решить? Я предполагаю, что это может быть какая-то форма кеширования данных, выполняемая svnserve.exe, но я не нашел никаких подсказок об этом в Интернете.
Вы, вероятно, захотите установить, сколько именно времени нужно, чтобы достичь этого уровня использования памяти. Является ли это чисто вопросом времени, или вы можете ускорить процесс, выполнив больше коммитов или выполнив больше проверок и т. Д. Утечки памяти редки, но возможны и обычно приводят к проблемам с производительностью. Эти проблемы будут проявляться в разных точках для разных конфигураций. Репозиторий работает медленнее после достижения 200 МБ?
В большинстве случаев память не «тратится зря». Задача операционной системы - управлять распределением памяти в целом, но некоторые приложения могут иметь свою собственную стратегию. В этом случае SVN может иметь кеш, но он также может выделять больше памяти, так что это непрерывное распределение памяти. Обычно ОС должна видеть нехватку памяти и использовать ряд эвристических методов, чтобы другие приложения продолжали нормально работать.
Что бы я попробовал:
Пара вопросов к вам ...
Я не особо разбираюсь в Windows, но похоже на кеширование или ваш репозиторий довольно большой, поэтому индексы, необходимые для его эффективной работы, классифицируются как "короткие" :) Есть ли способ, как в случае с Linux, увидеть, как память распределяется / используется для каждого процесса, возможно, через диспетчер задач или Монитор ресурсов?
Изменить: это действительно должен быть комментарий к вашему вопросу, но комментарии, похоже, совершенно испортить все форматирование, и я действительно хотел, чтобы вопросы были отмечены списком. :-)
Это # интересно - я не слышал о большом использовании памяти Svnserve в списках рассылки, возможно, вы захотите разместить там.