Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

tgptraffic_biz
Posts: 182
Joined: Fri Nov 16, 2018 2:59 pm

Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by tgptraffic_biz »

Добрый день. Столкнулись с проблемой - сделал я мастер с базой на 800к и 3 языковыми слейвами. Он для каждого слейва делает свою таблицу со статистикой - они весят прилично очень - rot_gallery_stats18 InnoDB 836576.
После стали делать слейвы - на них для отдельно ротации по языкам пришлось включать отдельные дески - Separate descs, итого по 4 таблицы статистики на каждый слейв. Сервер стал еле ворочаться, mysql перестал помещаться в памяти, стали тупить харды. сайты стали грузиться по 30 секунд. Пока сделал deSeparate descs и удалил таблицы со статистикой на слейвах.
Вот сейчас думаю как решать проблему, нужны ваши рекомендации :
- Делает ли смарт автобэкапы, в какое время, можно ли указать ему куда их писать ( у нас есть отдельные SATA-диски под эти задачи ) ?
- Большую ли нагрузку на жесткие диски несет создание языковых слейвов ( делали сразу на 5 сайтах ) ?
- Держит ли TCMS в памяти таблицы со статистикой ( rot_gallery_stats18 ) и что он держит в памяти ?
- хочу взять отдельный сервер под mysql - 64 гига оперативки, 2*480 ССД. Планирую под 50-70 слейвов, база галер 1 лям, 3 языковых слейва на каждом. Решит это мои проблемы ?
- Посоветуйте как настроить сервер под TCMS ( админы soft-com.biz ). текущий qps 9841
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by admin »

Приветствую!

1. да, можно выключить в сетингах и делать это самостоятельно по крону в нужное время, в нужный каталог и тп

2. большую ли нагрузку создает 1 файл? вопрос не имеет смысла, создание таблицы (файла) нагрузку не создает, создает то что его к файлу идет обращение, как много и асто зависит от трафа и тп

3. скрипт вообще ничего не держит в памяти, всей базой занимается мускл. Все что делает скрипт - это условно спрашивает мускл " какие есть галеры в такой-то категории"

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

5. никакой специальной настройки именно под скрипт не существует, это примерно как "какие оптимальные настройки для машины если я там везу ящик" поэтому настройки зависят от того какой ящик, как быстро вы едете и тп
но начать можно отсюда

http://smartcj.com/wiki/doku.php?id=ru:mysql_tunning
Don't forget to run script update
tgptraffic_biz
Posts: 182
Joined: Fri Nov 16, 2018 2:59 pm

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by tgptraffic_biz »

Долго изучали поведение сервера и поняли что генерация страниц, особенно не из кеша ( skip_cache=true )
начинает тупить сильно ( до 25 секунд ) когда количество таблиц слейвов переваливает в базе за какое-то определенное число.
Почитали рекомендации насчет innodb_buffer_pool_size и там черным по белому написано :
"innodb_buffer_pool_size - туда должен влезать весь датафайл (таблицы в InnoDB), те если он у вас 500 метров и их 5 штук то тут должно быть 2.5 ГИГА (конкретно эта цифтра - это размер всех активных rot_galleries + rot_gallery_data* + rot_gallery_stats таблиц )."
Теперь вопрос : скажем база галер у меня 500к, это порядка 700mb размер таблицы rot_gallery_statsXX. Размер оперативки 64 гига, значит лимит такого сервера порядка 40-50 сайтов ( там же еще нужно место оставить в памяти ). Если же я захочу делать сайты с 4 языковыми слейвами, то это надо еще на 4 умножать количество таблиц, тогда влезут какие-то 10 сайтов.
Я правильно понимаю что innodb_buffer_pool_size в любом случае с ССД будет тупить и все должно быть в оперативке ?
Есть какие-то способы оптимизации этого дела под мои задачи ?
Я так понимаю, оптимальной была бы схема сначала ротировать на слейве общую базу, но с настройкой
http://prntscr.com/lko9cv
А после оставлять сравнительно небольшое количество галер ( порядка 50К ), но с возможностью вывода поиска и пагинации из общей базы мастера. Такое возможно реализовать ?
Last edited by tgptraffic_biz on Tue Nov 20, 2018 4:49 pm, edited 1 time in total.
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by admin »

ССД сильно спасает ситуацию

тут никаких мистики нет

условно нам надо вывести категоирю А, там галеры ИД 1, 10000, 150000
если эти данные в памяти - мы быстро отсортировали и вывели

если их нет в памяти то надо идти и прочесть их с диска. нам надо пойти в условный сектор 1, прочесть данные галеры, потом переместить головку по диску на сектор 10000 прчесть данные сл галеры, и потом переместить на сектор 150000. Все это очень медленно, random seek для HDD - это 20-30 мс. Все это очень грубо но условно что б прочесть эти 3 галеры его надо 90 мс, SSD random seek time - 0.1ms

думаю на этом примере понятно почему SSD резко спасает ситуацию если не хватает памяти.

25 секунд - это тож не какое-то магическое время, просто у вас так загружен винт. Тут все тоже оч просто. Условно на диске сектора 1 - 100. База например в секторе 1-25 и вот головка ездит между ними и все вроде быстро, потому что головке надо ездить относительно мало туда сюда.

но тут пошел траф и надо читать с диска тумбы, а они в секторах 75-100. И вот винт читает в начале диска, потом головка едет через весь диск что б прочесть что-то в 90 секторе, а потом надо ехать через весь диск назад что б прочесть что-то из базы. Производительность резко падает. Это нормальная ситуация для HDD когда нагрузка растет лавинообразно, те только что было 20%, а прибавили 10% трафа а нагрузка стала 60% например.


Сколько таблиц должно влезать в память - тоже оч просто

Для каждого слейва есть stats + data (дески ).
Если своих деской у слейва нет - значит не надо грузить\читать таблицу десков для него, пользуемся таблицей от мастера, база меньше и тп.
Don't forget to run script update
tgptraffic_biz
Posts: 182
Joined: Fri Nov 16, 2018 2:59 pm

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by tgptraffic_biz »

У меня сейчас винты SSD ! И при этом 25 секунд. Мы долго смотрели структуру базы смарте и какие запросы тупят и пришли к выводу : есть таблица rof_gal2tag - таблица из 3 ид соответствия - ид галеры, ид тега и ид сайта. И эта таблица соответствия одна из самых используемых, она фактически в каждом запросе участвует.
Вот у нас 500 активных тагов и 50000 неактивных. Я правильно понимаю что надо все неактивные удалять и тогда количество операций на 1 запрос к базе упадет на порядок ?
Второй вопрос по размерам самих таблиц - понятно, что их можно в разы уменьшить переходом с групп на таги. Но тумбы групп я вывожу с сортировкой по CTR, смогу ли я выводить так же тумбы тагов ?
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by admin »

rof_gal2tag участвует в каждом запросе только если у вас сайт сделан по тагам, а не по категориям

А вся база изначально распланирована под категории
Don't forget to run script update
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by admin »

что значит перейти с тагов на категории с уменьшением базы - не понял...
Don't forget to run script update
tgptraffic_biz
Posts: 182
Joined: Fri Nov 16, 2018 2:59 pm

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by tgptraffic_biz »

Вот из лога запросов :
17:25::query_time=21.586239099503::query=SELECT SQL_CALC_FOUND_ROWS *, (select count(*) from rot_gal2tag as gt where gt.tag_id = t.tag_id and site_id = 1 ) as total_items
17:26::query_time=20.017285108566::query=SELECT SQL_CALC_FOUND_ROWS *, (select count(*) from rot_gal2tag as gt where gt.tag_id = t.tag_id and site_id =

При каких операциях скрипт выолняет такие запросы и как оптимизировать время таких запросов ?
admin
Site Admin
Posts: 37247
Joined: Wed Sep 10, 2008 11:43 am

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by admin »

когда вы ходите по админке в меню тагов
Don't forget to run script update
tgptraffic_biz
Posts: 182
Joined: Fri Nov 16, 2018 2:59 pm

Re: Конфиг и настройка сервера под большую ( 200+ гиг ) базу смарта

Post by tgptraffic_biz »

а вот такой ?
16:37::query_time=4.0036859512329::query=insert into rot_gal2tag (`gallery_id`, `site_id`, `tag_id`) values ('1117676', '21', '1661'):: <= /home/httpd/domain/content/html/jvIas/includes/db_modules/mysql.php (db_query) (time: 4.0036
Post Reply