Pull to refresh

Оптимизация размера сайта на платформе 1С-Битрикс

Доля использования 1С-Битрикс в рунете продолжает расти, поэтому все чаще приходится сталкиваться с этой cms при администрирование веб-серверов. У этой cms (как и у других) существует много проблем, и я бы хотел рассказать об одной из них, с которой столкнулся уже несколько раз — это большой размер, занимаемый сайтом на cms 1C-Битрикс:



Как системные администраторы сталкиваются с этой проблемой?

На одном из серверов, которые находятся у меня на администрировании, посыпались ошибки БД. Практически сразу было выяснено, что причина ошибок — отсутствие свободного места на хостинге. Почистив ненужные файлы и временно вернув работоспособность серверу, я сел думать, что можно удалить еще? Проблема осложнялась тем, что хостер не мог увеличить размер раздела, то есть выход оставался один — освобождать место удалением файлов, либо переносом сайтов с сервера.

Следует отметить, что подавляющее большинство сайтов на сервере были созданы на основе 1С-Битрикс, которая имеет свои особенности в плане дискового пространства:
  • Во первых, платформа Битрикс компенсирует проблемы производительности, используя кэш, который при дефолтных настройках представляет собой файловый кэш в папке сайта. Это объясняет регулярное увеличение занимаемого дискового пространства на хостинге. Это составляло большую проблему на старых версиях платформы, доходило до того, что сайт размером ~200Мб создавал кэш размеров в ~600Мб. Точно утверждать не могу, но у меня сложилось ощущение, что такое поведение было исправлено только в версии 14.0
  • Во вторых, сам дистрибутив 1С-Битрикс содержит много лишних файлов. В частности это — несколько демо-сайтов для разработчиков в каждом дистрибутиве платформы. Опытные разработчики сразу удаляют их (папки /bitrix/wizards/bitrix/demo, /bitrix/modules/bitrix.eshop, /bitrix/modules/bitrix.sitecorporate), но это происходит далеко не всегда.


Проведем небольшой опыт.
Разворачиваем пустой сайт, используя скрипт bitrixsetup.php с официального сайта. Для установки выбираем версию «Малый бизнес». Выбор кодировки — cp1251

После установки сайт, абсолютно не содержащий контента занимает ~366Мб.
366M new

Из них демо-данные занимают ~108Мб
55M new/bitrix/wizards
11M new/bitrix/modules/bitrix.sitecorporate
42M new/bitrix/modules/bitrix.eshop

Примерное число сайтов на хостинге у нас около ста. Таким образом, удалив соответствующие папки, мы освобождаем около 10Гб дискового пространства. Хочу отметить, что данные каталоги так же попадают в архивы резервных копий, создаваемые в папке сайта, увеличивая их на 50-100Мб.

На скорую руку был написан скрипт для поиска проблемных папок на сервере, которым мне бы и хотелось поделиться:
#!/bin/bash

if [ -z "$1" ];
then
	echo "please, use this with web-root path as first argument"
	echo "for removing files use --remove as second argument"
	exit 1
fi

#путь к web-root
path=$1


find $path -name "wizards" -prune -type d -print0 | grep -FzZ 'bitrix/wizards' |  xargs --null -0 du -sh
find $path -name "bitrix.sitecorporate" -prune -type d -print0 |  xargs --null -0 du -sh

if [[ "$2" == "--remove" ]];
then
	find $path -name "wizards" -prune -type d -print0 | grep -FzZ 'bitrix/wizards' |  xargs --null -0 rm -rf
	find $path -name "bitrix.sitecorporate" -prune -type d -print0 |  xargs --null -0 rm -rf
fi

exit 0


Скрипт запускается с параметром, содержащим путь к папке, в которой будет происходить поиск.
При указании вторым параметром --remove, найденные папки будут автоматически удалены.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.