Оптимизация MySQL

12 3
-Mouse-
На сайте с 26.03.2007
Offline
108
3492

Здравствуйте форумчане,

Нужна Ваша помощь в оптимизации MySQL базы.

Ситуация такова, что страницы с товарами (20 шт. на странице) генерируются по 2-3 сек (и более), при этом CPU толком не нагружается. Страницы без товаров генерируются за 0.1-0.3 сек. Статика (сами картинки и тд) отдаются очень быстро.

Хост взят в аренду, на хосте стоит FreeBSD 7.0, Apache, php в режиме mod_php, nginx, APC.

Данные:

MySQL 5.0.67

Размер: ~200 МБ

198 таблиц, из них 90% InnoDB

Таблицы проиндексированы надлежащим способом, используется движек Magento.

Вот что помечает красным "состояние MySQL":

Innodb_buffer_pool_reads 1,393

Handler_read_rnd 141 k

Handler_read_rnd_next 2,540 k

Created_tmp_disk_tables 215 k

Key_writes 32 k

Opened_tables 264

Данные за 7 дней.

Пробовал увеличивать в 2-4 раза:

table_cache

sort_buffer_size

join_buffer_size

query_cache_size

tmp_table_size

key_buffer_size

read_buffer_size

read_rnd_buffer_size

bulk_insert_buffer_size

myisam_sort_buffer_size

innodb_additional_mem_pool_size

innodb_buffer_pool_size

Улучшения не заметны. :-(

Сам конфиг (почищен от коментариев):



[client]
#password = [your_password]
port = 3306
socket = /tmp/mysql.sock


[mysqld]
log = /var/log/MySQL.log

# generic configuration options
port = 3306
socket = /tmp/mysql.sock



max_connections = 100

max_connect_errors = 10

table_cache = 2048

max_allowed_packet = 64M

max_heap_table_size = 32M

sort_buffer_size = 16M

join_buffer_size = 16M

query_cache_size = 96M

query_cache_limit = 16M

thread_stack = 512K

tmp_table_size = 512M

log_slow_queries

long_query_time = 2

key_buffer_size = 512M

read_buffer_size = 32M

read_rnd_buffer_size = 32M

bulk_insert_buffer_size = 32M

myisam_sort_buffer_size = 64M

# Automatically check and repair not properly closed MyISAM tables.
myisam_recover

innodb_additional_mem_pool_size = 16M

innodb_buffer_pool_size = 512M

innodb_data_file_path = ibdata1:10M:autoextend

Кто, что может подсказать по этому поводу?

Заранее спасибо.

Andreyka
На сайте с 19.02.2005
Offline
822
#1

длинные запросы в лог, потом explain

Не стоит плодить сущности без необходимости
RAS
На сайте с 27.11.2005
Offline
126
RAS
#2

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

Администрируем сервера, впс, вдс. Ускоряем загрузку сайтов - DLE, Word Press, Joomla, Modx... Настраиваем безопасность. Ручная чистка rootkit/malware/вирусов. (/ru/forum/867860) Разработка - shell/bash/sh/python/perl.
Слава Шевцов
На сайте с 23.07.2005
Offline
370
#3
-Mouse-:
Ситуация такова, что страницы с товарами (20 шт. на странице) генерируются по 2-3 сек (и более), при этом CPU толком не нагружается. Страницы без товаров генерируются за 0.1-0.3 сек. Статика (сами картинки и тд) отдаются очень быстро.
Хост взят в аренду, на хосте стоит FreeBSD 7.0, Apache, php в режиме mod_php, nginx, APC.

VDS? Сколько записей в таблице? Есть ли в таблицах с запросом text или blob поля?

P.S. Попробуйте отсортировать в MYSQL-таблице данные так же, как они выводятся на страницу ;)

Неизменность точки зрения неизменно порождает иллюзию понимания.
V
На сайте с 25.07.2006
Offline
128
#4
страницы с товарами (20 шт. на странице) генерируются по 2-3 сек (и более), при этом CPU толком не нагружается

Если процессор не нагружен, то вполне возможно, что это не вина mysql.

Скрипт чего-то ждет. Возможно там идет какой-то обращение во внешний мир. Попробуйте запустить netstat во время работы скрипта - может что-то заметите.

Еще может быть полезным расставить в скрипте метки времени, чтобы найти медленную часть. Типа echo "<!-- ".date("r")."-->"

Если таки mysql, попробуйте во время выполнения скрипта дать несколько раз с mysql-консоли

show full processlist;

Вы своими глазами сможете увидеть долгоиграющие запросы, если таковые есть.

Приватный linux-администратор
f0x
На сайте с 20.09.2006
Offline
116
f0x
#5

А почему Вы так уверены что дело именно в настройках mysql ?

Тормоза могут давать и другие причины

Слава Шевцов
На сайте с 23.07.2005
Offline
370
#6
vapetrov:
Скрипт чего-то ждет. Возможно там идет какой-то обращение во внешний мир.

На диск, скорее всего, идёт это длительное обращение "во внешний мир". VDS отдаёт 5-10% скорости чтения с диска, данные раскиданы по всему диску, а в запросе идёт join на таблицах с полем типа text (такой запрос приводит к автоматическому сохранению промежуточной таблицы на диск вне зависимости от её размера). В итоге и тормоза без загрузки проца.

Unlock
На сайте с 01.08.2004
Offline
786
#7
Слава Шевцов:
VDS отдаёт 5-10% скорости чтения с диска

Я извиняюсь что влезаю, но видимо это одна из причин по которой говорят что VDS все же хуже чем самый простой, но реальный сервер? Уже неоднократо слышал подобное утверждение.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
-Mouse-
На сайте с 26.03.2007
Offline
108
#8
Слава Шевцов:
VDS ...

У нас не VDS.

Это сервер в аренду. Atlon 2100LE, 2Gb ОЗУ.

f0x:
А почему Вы так уверены что дело именно в настройках mysql ?
Тормоза могут давать и другие причины

Та вот тормоза имеено на тех старницах где больше всего идут запросы в mysql ... я бы сказал точнее - чем больше товаров на странице - тем дольше мы грузимся ... причем при 500 товарах, генерация страницы уже 30 сек.

С учетом того, что Magento грамотно кеширует блоки сайта (меню, подвалы и прочие куски страницы), причем эти блоки хранятся в tmpfs папке (в ОЗУ вообщем) + стоит еще APC, единственный вариант на что грешить - помоему на мускул.

RAS:
статус бы еще посмотреть. А так или самостоятельно или запустить туда умного человека, который все сделает.

А есть такие, которые не будут греть ценой как за настройку сервера с нуля? :-)

У меня подозрение что проблема связанна с этими цифрами:

Handler_read_rnd 141 k

Handler_read_rnd_next 2,540 k

и проблема скорей всего гдето рядом ...

Вообщем попробую поковырять, промаркировать скрипты и посчитать время и задержки ...

Спасибо за советы.

Слава Шевцов
На сайте с 23.07.2005
Offline
370
#9
-Mouse-:
У нас не VDS.
Это сервер в аренду. Atlon 2100LE, 2Gb ОЗУ.

На другие вопросы можете ответить или хотя бы поглялеть в ту сторону? ;)

P.S. "Страницы без товаров генерируются за 0.1-0.3 сек." - это очень медленно ☝

4пальца
На сайте с 30.03.2006
Offline
99
#10

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

Размещаю рекламные статьи на площадках тематики "Новости/СМИ": тИЦ 850
12 3

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