Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


NemoTec

Recommended Posts

Итак, пока что опишу сумбурно. Завтра загляну и допишу. Если создал не там - простите, не нашел куда.
Имеется "сервак" всё лежит на ноутбуке :'( следующей конфы:
Для тех, кому интересно
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

Надіслати
Поділитися на інших сайтах

  • 4 months later...

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
Надіслати
Поділитися на інших сайтах

  • 7 months later...
  • 2 weeks later...

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

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

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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.