Перейти к содержанию
NemoTec

Ускорение работы всей системы за счёт TMPFS\RAMFS

Рекомендуемые сообщения

Итак, пока что опишу сумбурно. Завтра загляну и допишу. Если создал не там - простите, не нашел куда.
Имеется "сервак" всё лежит на ноутбуке :'( следующей конфы:
Для тех, кому интересно
CPU: Intel Pentium Dual-Core T3400 @ 2.0 Ghz
MainBoard: Intel PM45 Express
RAM: 3 Гбайт DDR2 @ 800 Mhz
HDD: WD 320 Гбайт @ 5400 об./мин
Всё настроено по инструкции "Идеальный сервер - Ubuntu 11.04 [iSPConfig 3]"+ я поставил memcache, nginx, eaccelerator...
Долгое время юзал memcache+nginx и был доволен, но сегодня в "заду" загорелось и решил поискать я что-то эдакое. Эдаким оказалась TMPFS. В кратце - это файловая система, целиком сидящая в RAM, отличия от RAMFS в том, что RAMFS может динамично увеличиваться, пока не "съест" всю память и не использует swap (если я всё правильно понял).
Короче, заинтересовался я и начал рыть. Нашел вот этот пост. В нём меня дико заинтересовала фраза:

Such type of content is a hosted website. You can decrease page or resource loading time by moving them from hard disk to the memory filesystem.

Теперь вопрос:
Как это всё настроить так, чтобы всё было прозрачно? То есть чтобы при создании сайта или базы в ISPconfig они ложились в TMPFS раздел, который бы монтировался при включении и сохранялся при выключении.
Попробовал - получилось. Перенёс сайт на Opencart, но на глаз не сильно понял что же поменялось... Подумал, подумал и решил, что виновата база. Рискнул и перенёс всю папку /var/lib/mysql
Итог - всё просто летает. Изменений в fstab не вносил, то есть при ребуте всё сотрётся и надо будет монтировать и переносить опять.
Продолжая рыть нашел такой пост. В нём уже гораздо интересней, так как есть возможность:

Чтоб при включении перенести файлы из .ramdisk-archive в .ramdisk

Теперь вопрос:
Как это всё настроить так, чтобы всё было прозрачно? То есть чтобы при создании сайта или базы в ISPconfig
они ложились в TmPFS раздел, который бы монтировался при включении и сохранялся при выключении.

Я знаю что:
1. У меня в есть около 1,5гб свободной оперативы.
2. Есть /var/www
3. Сайты, которые там лежат вместе с базами, спокойно уместятся в 1,5гб
Ну что, попробуем?! 
 
================================UPDATE================================
MySQL в TMPFS
Итак, только что у меня получилось завести MySQL в TMPFS. Я делал это на Ubuntu 13.04
Всё делалось с помощью статей, приведённых в первом посте, и методом тыка. Так что любые дополнения и улучшения приветствуются.
 
1. Первым делом создаём две директории: "mysql_tmp" - рабочая папка MySQL в TMPFS и "mysql_arch" - папка для сохранения на жестком диске.
 

mkdir /var/lib/mysql_tmp
mkdir /var/lib/mysql_arch

2. Далее назначаем владельца рабочей папки, и делаем её доступной для записи

chown mysql:mysql /var/lib/mysql_tmp/tmp/mysql_tmp
chmod 777 -R /var/lib/mysql_tmp

3. Копируем файлы из нынешней рабочей папки, в новую (TMPFS).

rsync -a /var/lib/mysql/ /var/lib/mysql_tmp/
rsync -a /var/lib/mysql/ /var/lib/mysql_arch/

4. Чтоб при включении перенести файлы из mysql_arch в mysql_tmp добавил в /etc/init.d/rc.local команду "rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/":

nano /etc/init.d/rc.local

И допишите в конец файла

rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/

 
5.Теперь нужно-же сохранять изменения в mysql_arch при выключении сервера.
Тут немного сложнее. В /etc/init.d кидаем файлик такого содержания:

#!/bin/sh
rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_arch/
exit 0

Обзываем S00ramdisk-sync-shutdown и ставим права на выполнение.

nano /etc/init.d/ramdisk-sync-shutdown
#Вставляем содержимое
chmod 7777 /etc/init.d/S00ramdisk-sync-shutdown

Теперь в папку /etc/rc0.d и /etc/rc6.d делаем символические ссылки с нашего файла: S00ramdisk-sync-shutdown. 

ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc0.d
ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc6.d

Все, теперь при выключении или перезагрузке содержимое нашего TMPFS будет сохранено на HDD в mysql_arch.

6. Ну и на последок не забываем про форсмажор - добавим задание в cron, чтобы копирование происходило каждых 20 минут.

crontab -e

и в конец файла вставить:

*/20 * * * * rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_tmp_arch/

7. Теперь осталось добавить монтирование в fstab

nano /etc/fstab

Добавить в конец

tmpfs /var/lib/mysql_tmp tmpfs size=1024m 0 0

8. Теперь окончательно - поменяйте рабочий путь в файле конфигурации MySQL my.cnf

nano /etc/mysql/my.cnf

В секции "datadir = /var/lib/mysql_tmp"

Итак, вроде бы всё работает. Пока так и не понял насколько помогло - только обновил сервер, сайты ещё не перенёс, поэтому пока сказать не могу.
Если вдруг после ребута mysql откажется запускаться - попробуйте дать права на папку повторно.

chown mysql:mysql /var/lib/mysql_tmp/
chmod 777 -R /var/lib/mysql_tmp
Изменено пользователем NemoTec

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал, извини если большая нагрузка была 

Benchmarking masteroff.com.ua (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests


Server Software:        nginx/0.8.54
Server Hostname:        masteroff.com.ua
Server Port:            80

Document Path:          /
Document Length:        66791 bytes

Concurrency Level:      100
Time taken for tests:   126.952 seconds
Complete requests:      5000
Failed requests:        4999
   (Connect: 0, Receive: 0, Length: 4999, Exceptions: 0)
Write errors:           0
Non-2xx responses:      4475

 

Из 5000 запросов - 4475 не прошло.

Мой совет, нужно выбросить этот ноутбук с древним винтом, для хостинга магазина он точно не годится

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если расширить оперативку и натянуть в нее движек - будет повеселее, но боюсь в старом ноуте сильно не расширить, а нормальный ИМ имеет объем от 5гб и выше (у меня до 20 доходило вместе с файлами кэша). Еще как неплохая альтернатива - ssd накопитель (отклик в 60 раз быстрыее чем на hdd). 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

грамотно настроенный mysql и так все нужные данные будет держать в RAM

http://stackoverflow.com/questions/11748629/how-to-figure-out-if-mysql-index-fits-entirely-in-memory

 

либо всю таблицу там держать http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал, извини если большая нагрузка была

Наоборот спасибо. Подскажите, а как вы провели данный тест. Я только учусь, поэтому интересуюсь.

Мой совет, нужно выбросить этот ноутбук с древним винтом, для хостинга магазина он точно не годится

Согласен, но ничего другого нету, а для начальной разработки он точно лучше, чем простой виртуальный хостинг.

Еще как неплохая альтернатива - ssd накопитель (отклик в 60 раз быстрыее чем на hdd).

Знаю, у самого стоит OCZ Vertex 2, но на этот "серв" ставить безсмысленно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тестировал утилитой ab http://www.ashep.org/2011/nagruzochnoe-testirovanie-web-servera/#.UW-rLLU559U

 

Если хостинг на ноутбуке бесплатный, то для разработки самое оно.

 

У меня просьба, попробуйте провести бенчмарк ноутбука. Давайте сравним с VPS, https://opencartforum.com/topic/16977-testim-svoi-vps-i-vds/?hl=unix

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MySQL в TMPFS

Итак, только что у меня получилось завести MySQL в TMPFS. Я делал это на Ubuntu 13.04

Всё делалось с помощью статей, приведённых в первом посте, и методом тыка. Так что любые дополнения и улучшения приветствуются.

 

1. Первым делом создаём две директории: "mysql_tmp" - рабочая папка MySQL в TMPFS и "mysql_arch" - папка для сохранения на жестком диске.

mkdir /var/lib/mysql_tmp
mkdir /var/lib/mysql_arch
2. Далее назначаем владельца рабочей папки, и делаем её доступной для записи

chown mysql:mysql /var/lib/mysql_tmp/tmp/mysql_tmp
chmod 777 -R /var/lib/mysql_tmp
3. Копируем файлы из нынешней рабочей папки, в новую (TMPFS).

rsync -a /var/lib/mysql/ /var/lib/mysql_tmp/
rsync -a /var/lib/mysql/ /var/lib/mysql_arch/
4. Чтоб при включении перенести файлы из mysql_arch в mysql_tmp добавил в /etc/init.d/rc.local команду "rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/":

nano /etc/init.d/rc.local
И допишите в конец файла

rsync -a /var/lib/mysql_arch/ /var/lib/mysql_tmp/
 

5.Теперь нужно-же сохранять изменения в mysql_arch при выключении сервера.

Тут немного сложнее. В /etc/init.d кидаем файлик такого содержания:

#!/bin/sh
rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_arch/
exit 0
Обзываем S00ramdisk-sync-shutdown и ставим права на выполнение.

nano /etc/init.d/ramdisk-sync-shutdown
#Вставляем содержимое
chmod 7777 /etc/init.d/S00ramdisk-sync-shutdown
Теперь в папку /etc/rc0.d и /etc/rc6.d делаем символические ссылки с нашего файла: S00ramdisk-sync-shutdown. 

ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc0.d
ln -s /etc/init.d/S00ramdisk-sync-shutdown /etc/rc6.d
Все, теперь при выключении или перезагрузке содержимое нашего TMPFS будет сохранено на HDD в mysql_arch.

6. Ну и на последок не забываем про форсмажор - добавим задание в cron, чтобы копирование происходило каждых 20 минут.

crontab -e
и в конец файла вставить:

*/20 * * * * rsync -a /var/lib/mysql_tmp/ /var/lib/mysql_tmp_arch/
7. Теперь осталось добавить монтирование в fstab

nano /etc/fstab
Добавить в конец

tmpfs /var/lib/mysql_tmp tmpfs size=1024m 0 0
8. Теперь окончательно - поменяйте рабочий путь в файле конфигурации MySQL my.cnf

nano /etc/mysql/my.cnf
В секции "datadir = /var/lib/mysql_tmp"

Итак, вроде бы всё работает. Пока так и не понял насколько помогло - только обновил сервер, сайты ещё не перенёс, поэтому пока сказать не могу.

Если вдруг после ребута mysql откажется запускаться - попробуйте дать права на папку повторно.

chown mysql:mysql /var/lib/mysql_tmp/
chmod 777 -R /var/lib/mysql_tmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо.

ушло в FAQ

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли использовать RAMFS для хранения кешей vqmod/vqcache и system/caсhe ?

Есть ли в этом смысл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Провел эксперимент. Смонтировал tmpfs командой

mount -t tmpfs -o size=200m tmpfs /opt/ram

Папки vqmod/vqcache и system/caсhe а также smartoptimizer/cache сделал как ссылки в /opt/ram

Теперь кеш создается в памяти. Прироста производительности не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От markimax
      990.00 руб
      Скачать/Купить дополнение


      Jet Cache - кеширование, оптимизация для магазинов

       

      Логин / пароль:
      demo / demo
       
      Документация  
      Более 10`000 интернет магазинов выбрали SEO CMS для работы
      SEO CMS JET CACHE :: Jet Cache - быстрая система кеширования страниц, контроллеров и методов моделей opencart

      Версия под opencart 3.x высылается по запросу
      Возможности
       
      - кеширует полностью страницы при полной интеграции с opencart (позволяет кешировать и для зарегистрированных пользователей и изменений корзины а также в зависимости от изменений в модулях)  
      - кеширует выбранные контроллеры (т е фактически  любые модули, будь то меню или т.п. а также полностью кеширует позиции (уникальная технология которая не реализовано ни в одном модуле кеширования для opencart) (с))  
      - кеширует методы моделей opencart (подсчет количества товаров и т п )  
      - простая установка и обновление  
      - гибкие настройки  
      - поддержка мультиязычности  
      - поддержка мультимагазинов  
      - поддержка протоколов https и http  
      - гибкая взаимосвязь с любым функционалом платформы SEO CMS  
      - совместимость с любой темой, любыми модулями, которые соответствуют стандартам программирования  
      - поддержка кеширования sitemap Чем модуль лучше других
       
      - уникальные технологии кеширования не имеющие аналогов в opencart (уникальная технология полной интеграции с opencart, в отличии от всех кешировщиков которые сделанны по технологии v2pc)  
      - модуль работает с любыми темами и модулями Требования
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) PHP 5.3 или выше Модуль НЕ заменяет файлы системы Модуль НЕ использует ioncube  
      Совместимость модуля
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) Любая тема или любые модули (которые сделаны без ошибок, согласно стандартов программирования или верстки) для оpencart 2.x  
      Установка, настройка
       
      Если пользователь хочет чтобы сотрудник службы технической поддержки проделал работу по установке и настройке модуля вместо пользователя на сервере пользователя, это уже услуга + 590 рублей  
      Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее... Добавил markimax Добавлено 15.03.2017 Категория Кэширование, сжатие, ускорение Системные требования PHP 5.3+ Сайт разработчика https://opencartadmin.com/seo-cms-jet-cache.html Старая цена 590 Метод активации Через официальный сайт дополнения Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х  
    • От p0v1n0m
      Скачать/Купить дополнение


      Чистильщик кэша и логов
      Модуль поможет очистить кэш и логи одним кликом, находясь на любой странице админки.
       
      Установка:
      1. Загрузить скачанный архив для своей версии движка через Установщик дополнений.
      2. Очистить и Обновить кэш в Менеджере дополнений.
      3. Установить и включить модуль.
      Добавил p0v1n0m Добавлено 15.08.2016 Категория Кэширование, сжатие, ускорение Системные требования Сайт разработчика https://github.com/p0v1n0m/opencart_storage_cleaner Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1  
    • От p0v1n0m
      Модуль поможет очистить кэш и логи одним кликом, находясь на любой странице админки.
       
      Установка:
      1. Загрузить скачанный архив для своей версии движка через Установщик дополнений.
      2. Очистить и Обновить кэш в Менеджере дополнений.
      3. Установить и включить модуль.
    • От markimax
      Логин / пароль:
      demo / demo
       
      Документация  
      Более 10`000 интернет магазинов выбрали SEO CMS для работы
      SEO CMS JET CACHE :: Jet Cache - быстрая система кеширования страниц, контроллеров и методов моделей opencart

      Версия под opencart 3.x высылается по запросу
      Возможности
       
      - кеширует полностью страницы при полной интеграции с opencart (позволяет кешировать и для зарегистрированных пользователей и изменений корзины а также в зависимости от изменений в модулях)  
      - кеширует выбранные контроллеры (т е фактически  любые модули, будь то меню или т.п. а также полностью кеширует позиции (уникальная технология которая не реализовано ни в одном модуле кеширования для opencart) (с))  
      - кеширует методы моделей opencart (подсчет количества товаров и т п )  
      - простая установка и обновление  
      - гибкие настройки  
      - поддержка мультиязычности  
      - поддержка мультимагазинов  
      - поддержка протоколов https и http  
      - гибкая взаимосвязь с любым функционалом платформы SEO CMS  
      - совместимость с любой темой, любыми модулями, которые соответствуют стандартам программирования  
      - поддержка кеширования sitemap Чем модуль лучше других
       
      - уникальные технологии кеширования не имеющие аналогов в opencart (уникальная технология полной интеграции с opencart, в отличии от всех кешировщиков которые сделанны по технологии v2pc)  
      - модуль работает с любыми темами и модулями Требования
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) PHP 5.3 или выше Модуль НЕ заменяет файлы системы Модуль НЕ использует ioncube  
      Совместимость модуля
       
      Opencart 2.x или любая сборка на нем (ocStore, Opencart.PRO, или другие) Любая тема или любые модули (которые сделаны без ошибок, согласно стандартов программирования или верстки) для оpencart 2.x  
      Установка, настройка
       
      Если пользователь хочет чтобы сотрудник службы технической поддержки проделал работу по установке и настройке модуля вместо пользователя на сервере пользователя, это уже услуга + 590 рублей  
      Лицензия Все права на модуль принадлежат разработчикам opencartadmin.com Условия использования лицензии: один домен - одна лицензия (покупка продукта для каждого домена). Условия использования лицензии - "на владельца". Далее...
    • От kJlukOo
      300.00 руб
      Скачать/Купить дополнение


      CART CACHE - кэшируем корзину (cart.php => getProducts)
      в опенкарте есть метод getProducts библиотеки cart.php
      этот метод вовзращает содержимое корзины для текущего пользователя
      на боевом магазине обычно этот метод вызывается 50+ раз
      соответственно происходит избыточная нагрузка на бд и на сайт в целом
      этот модуль кэширует возвращаемые данные до изменения корзины. те вместо 50+ раз метод отработает 1 раз,
      закэширует данные и одаст следующим 49+ 
      кэш хранится в сессии на стороне сервера(очевидно)
      данное кеширование используется в моем модуле
       
      Добавил kJlukOo Добавлено 25.08.2018 Категория Модули Системные требования Сайт разработчика https://awaro.ru Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х  
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.