Назад | Перейти на главную страницу

Избегайте двойного (де) сжатия в Subversion с Apache

У меня есть сервер Subversion 1.8, настроенный с Apache 2.2 на Windows 2003. Сервер, который у меня есть, немного стар, и у него много пиков загрузки процессора, которые, как я подозреваю, влияют на его производительность.

Этот сервер полностью посвящен подрывной деятельности.

Хотя я хочу иметь сжатие данных по сети (ввод и вывод), я хочу избежать двойного (де) сжатия на этом сервере.

Сейчас я использую следующие 2 директивы.

SVNCompressionLevel 5
SetOutputFilter DEFLATE

Я думал об отключении одного из них, но не смог найти рекомендации, какой из них лучше. Я тоже хочу иметь сжатие от клиента к серверу. Я подумал об использовании одного из этих двух вариантов:

# Let only mod_dav_svn handle compression
SVNCompressionLevel 5
# no SetOutputFilter or SetInputFilter

или

# Let only mod_deflate handle compression
SVNCompressionLevel 0
SetOutputFilter DEFLATE
SetInputFilter DEFLATE        #(new idea)

Я не уверен, сжимает ли клиент Subversion свои данные на сервер, если я просто добавлю на сервере SetInputFilter DEFLATE.

У кого-нибудь есть дополнительная информация по этому поводу?

Вы почти правы и правильное решение, позволяющее избежать двойного сжатия:

# Let only mod_deflate handle compression
SVNCompressionLevel 0
SetOutputFilter DEFLATE

Он отключает сжатие SVN для дельт при включении сжатия HTTP для всех ответов.

Но есть несколько предостережений:

  1. Клиент Subversion не сжимает тело HTTP-запроса, так как не знает, поддерживается ли сжатие сервером. Так SetInputFilter DEFLATE не нужен.

  2. HTTP-сервер Apache имеет утечку памяти в mod_dav / mod_deflate, когда сжатие включено, при этом не сообщается, что он поддерживает HTTP-сжатие.

Также вам следует подумать о выполнении дампа / загрузки вашего репозитория для повышения производительности - новые форматы добавляют некоторые индексации / ярлыки, которые помогают расходовать меньше ресурсов.