Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


NemoTec
 Share

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
Edited by NemoTec
Link to comment
Share on other sites

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

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
Link to comment
Share on other sites

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

  • +1 1
Link to comment
Share on other sites


грамотно настроенный 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
Link to comment
Share on other sites

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

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

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

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

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

Знаю, у самого стоит OCZ Vertex 2, но на этот "серв" сивить безсмысленно...
Link to comment
Share on other sites

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

 

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

 

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

Link to comment
Share on other sites

  • 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
Link to comment
Share on other sites

  • 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

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.