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