Upgrade сервера. А что именно "качать"?

NetBot
На сайте с 26.10.2005
Offline
172
749

Что то в последнее время стал сервак поднапрягаться. В частности - MySQL.

last pid: 70821;  load averages:  2.55,  2.41,  2.45   up 34+20:35:45  11:18:30

197 processes: 3 running, 192 sleeping, 2 zombie
CPU states: 16.6% user, 0.0% nice, 22.4% system, 0.5% interrupt, 60.5% idle
Mem: 709M Active, 1938M Inact, 289M Wired, 123M Cache, 112M Buf, 196M Free
Swap: 2048M Total, 204K Used, 2048M Free

Сервак относительно скромный (4-х ядерник, 4 гиг памяти, винты SATAII).

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

Кто нибудь сталкивался и с подобным и как апгрейдил сервак? Вообще, кто может что посоветовать?

N
На сайте с 06.05.2007
Offline
419
#1

Объемные группировки обычно переделывают на субаггрегатные таблицы по старым данным + union новых горячих данных.

От сортировок текстов избавляются внутренним подзапросом c сортировкой без текстов и внешним запросом на выборку текстов. Можно еще tmpdir пересадить в tmpfs ( в freebsd 7.0 ), если действительно создаются файлы.

SATAII - это не показатель скорости винта для СУБД. Показатель - это число оборотов в минуту.

Да и переходите на линукс уже. Cпециальные сборки mysql - percona и outdelta выпускают только для linux. Оно вам надо патчить вручную?

Кнопка вызова админа ()
F
На сайте с 16.06.2008
Offline
32
#2

а какая загрузка у вас дисковой подсистемы? нагрузку можно увидеть по iostat -x -c 5

NetBot
На сайте с 26.10.2005
Offline
172
#3
netwind:
Объемные группировки обычно переделывают на субаггрегатные таблицы по старым данным + union новых горячих данных.
От сортировок текстов избавляются внутренним подзапросом c сортировкой без текстов и внешним запросом на выборку текстов. Можно еще tmpdir пересадить в tmpfs ( в freebsd 7.0 ), если действительно создаются файлы.

SATAII - это не показатель скорости винта для СУБД. Показатель - это число оборотов в минуту.

Да и переходите на линукс уже. Cпециальные сборки mysql - percona и outdelta выпускают только для linux. Оно вам надо патчить вручную?

да я понимаю, что можно так со структурой извращаться, что будет всё летать. Но учитывая постоянную переделку и кучу костылей такой метод - это нечто нереальное.

Винты стоят самые обычные десктопные. 250гиг/7200об.мин.

Поэтому и ищу метод решения без кардинальной переделки базы. Самое узкое место - работа с временными таблицами. Их надо либо както писать в панять или увеличивать работу дисков.

Про tmpfs оссень интересна. Кто нибудь пробовал такое? Есть производительность?

$ iostat -x -c 5

extended device statistics
device r/s w/s kr/s kw/s wait svc_t b
ad1 1.7 26.3 31.4 593.1 0 139.7 5
ad3 0.0 0.0 0.2 0.0 0 1.4 0
extended device statistics
device r/s w/s kr/s kw/s wait svc_t b
ad1 4.0 44.9 35.0 719.1 0 3.5 2
ad3 0.0 0.0 0.0 0.0 0 0.0 0
extended device statistics
device r/s w/s kr/s kw/s wait svc_t b
ad1 0.0 0.0 0.0 0.0 0 0.0 0
ad3 0.0 0.0 0.0 0.0 0 0.0 0
extended device statistics
device r/s w/s kr/s kw/s wait svc_t b
ad1 4.0 20.0 16.5 301.5 0 3.4 7
ad3 0.0 0.0 0.0 0.0 0 0.0 0
extended device statistics
device r/s w/s kr/s kw/s wait svc_t b
ad1 1.0 1.0 16.0 127.8 0 5.1 1
ad3 0.0 0.0 0.0 0.0 0 0.0 0

вот както так.

N
На сайте с 06.05.2007
Offline
419
#4

запостите настройки mysql show global variables, вывод mysqlreport ( он красивее чистых счетчиков). счетчики show global status тоже запостите.

если используется innodb постите и show engine innodb status.

если все так плохо, то с точки зрения администратора-непрограммиста поможет только raid0 на этих ваших бытовых 7200 винтах и периодическое резервное копирование.

RAS
На сайте с 27.11.2005
Offline
126
RAS
#5

Можем помочь в данной проблеме, там не нужна кардинальная переделака базы, но запросы надо будет править. А так же оптимизировать настройки mysql и системы. Надо смотреть и детально обсуждать.

Администрируем сервера, впс, вдс. Ускоряем загрузку сайтов - DLE, Word Press, Joomla, Modx... Настраиваем безопасность. Ручная чистка rootkit/malware/вирусов. (/ru/forum/867860) Разработка - shell/bash/sh/python/perl.
NetBot
На сайте с 26.10.2005
Offline
172
#6
RAS:
Можем помочь в данной проблеме, там не нужна кардинальная переделака базы, но запросы надо будет править. А так же оптимизировать настройки mysql и системы. Надо смотреть и детально обсуждать.

ээх. ну даже теоретически нельза оптимизировать запрос имеющий LIKE '%search%' по паре полей и в этом же запросе куча JOIN с парой связок "многое ко многим", полнотектовый доп. поиск и групировка с сортировкой по разным полям. И всё это ворочается в базе на несколько гигов общим объёмом и посещаеостью под 50к в сутки.

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

Теперь, похоже, осталось только вываливание в память временных таблиц. Просто не ясно, а поможет ли?

N
На сайте с 06.05.2007
Offline
419
#7

NetBot, почему же. вместо like подключают полнотекстовой поиск

S
На сайте с 01.04.2008
Offline
91
#8

Upgrade way: Linux --> More RAM --> RAID

Править домен летит Айболит. И одно только слово твердит: - DNS! DNS! DNS!
Andreyka
На сайте с 19.02.2005
Offline
822
#9

1) Под временные таблицы - tmpfs

2) memlock

Не стоит плодить сущности без необходимости

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий