17
мая
Автор: MSW
Версия DLE: любая
Сайт поддержки: https://0-web.ru/
Tmpfs — временное файловое хранилище во многих Unix-like ОС. Предназначена для монтирования файловой системы, но размещается в ОЗУ вместо ПЗУ.
Статья посвящена методу ускорения работы DLE через tmpfs, в результате переноса директории кеша DLE в оперативную память.
Так как работа с оперативной памяться в разы быстрее чем работа с диском.
Входящие условия:
- выделенный сервер
- ОЗУ >= 1GB
- предположим что сайт располагается в директории на сервере: /var/www/site.ru/
В CMS DLE в папке кеша кроме временных файлов также хранятся файлы которые создаются/пересоздаются в процессе сохранения настроек, или выполнения тех или иных действий скрипта. Так как tmpfs является энергозависимой, тоесть при перезагрузке сервера данные которые в ней находятся будут безвозвратно утеряны, то надо както былобы сохранить важные файлы настроек и системного кеша, которые автоматически не создаются, например структура каталогов в папке кеша, категории, группы пользователей и т.д. вот тут на выручку приходит rsync.
Создаём директорию с кешем, которая будет на диске:
mkdir /var/www/cache_site.ru
chmod 777 /var/www/cache_site.ru
Копируем в созданную директорию теккущие данные:
rsync -a /var/www/site.ru/engine/cache/ /var/www/cache_site.ru/
Для синхронизации актуальных данных добавляем в крон сервера
crontab -e
следующую строку:
*/10 * * * * rsync -rpogt --delete /var/www/site.ru/engine/cache/ /var/www/cache_site.ru/ > /dev/null 2>&1
тут указано - каждые 10 минут синхронизировать данные(рекурсивно, с сохранением привелегий, времени создания) с директории кеша сайта(в оперативке) в директорию на диске.
Также когда сервер будет перезагружен надо смонтировать tmpfs и поместить в неё текущие данные кеша. Для этих целей создаём скрипт:
mcedit /etc/init.d/tmpfs_cache
с содержимым:
#!/bin/bash
mount -t tmpfs -o size=50M tmpfs /var/www/site.ru/engine/cache/
rsync -rpogt /var/www/cache_site.ru/ /var/www/site.ru/engine/cache/
тут size=50M - эо размер монтируемого блока. У меня например больше 25 метров кеш дле не занимает, потому так чтоб с запасом 50 метров вполне хватит.
Делаем файл исполняемым:
chmod +x /etc/init.d/tmpfs_cache
Добавляем в автостарт: (пример для убунту и дебиан, для своей ОС - ищите мануалы каким образом это делается)
update-rc.d tmpfs_cache defaults
Последний этап: запускаем созданный скрипт монтирования раздела оперативной памяти в папку кеша сайта и копирования данных в эту директорию.
/etc/init.d/tmpfs_cache
Подобным образом можно также перенести всю БД в оперативную память.
При написании использовались источники:
- Tmpfs
- Виртуальный диск в памяти: как создать ramdisk в Linux?
- rsync
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.