SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 15.12.2007 01:34:53

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Купили новый сервер. Помогите настроить MySQL.

Здраствуйте,

недавно купили новый мощный сервер Двухпроцессорный Xeon 3.2Ghz/Память 2Гига/HDD2x250. Всё вроде нормально, но загвозочка в настройках (оптимизации) MySQL, сейчас стоят настройки по-умолчанию. Я решил обратиться к Вам за помощью, т.к. в MySQL сервере не профи, и обратился потому что происходит следующая ситуация. Имеется сайт. Когда посещаемость была ниже 2000, всё было в норме. Сейчас посещаемость выросла до 5000 и тут начались проблемы. Странно ведет себя сервер, то при одновременной посещаемости в 200 человек - сервер работает быстро, а бывает при 100 начинаются такие тормоза, просто жуть. Сервер отвечает через секунд 30-60, грузиться долго. Смотрим в процессы сервера, нагрузка очень низкая, даже в самый тормозной момент. В такие моменты пробывали просто отключать сайт, и сервер сразу начинает летать только так, но стоит обратно включить сайт, секунд через 30 опять тормоз начинается. Сервер мощный, а единственный сайт с посещаемостью в 5000 человек и уже не справляется.

Помогите нам пожалуйста настроить MySQL под оптимальные настройки.

Сразу скажу стоит: FreeBSD и MySQL 5


Спасибо!

Неактивен

 

#2 15.12.2007 01:41:32

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Посмотрите, пожалуйста, iostat, и в консоли MySQL SHOW PROCESSLIST

Если конфигурация по-умолчанию, то попробуйте в разделе [mysqld] файла /etc/my.cnf добавить
query_cache_size=128M
key_buffer_size=32M
и перезапустить сервер

После некоторого времени работы, поместите, пожалуйста, здесь результат SHOW STATUS, выполненной в консоли MySQL

Неактивен

 

#3 15.12.2007 01:51:33

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

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

Сразу вопрос появился, нет файла по этому путю: /etc/my.cnf, найден тут: /var/db/mysql/my.cnf

Отредактированно 0lik.ru (15.12.2007 01:52:23)

Неактивен

 

#4 15.12.2007 03:51:10

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Купили новый сервер. Помогите настроить MySQL.

Про FreeBSD я уже писал багу. У них дико неправильно собран MySQL в портах,
просто дико неправильно. Обратите внимание на его базовый приоритет. +11.
С таким приоритетом он просто тупо не получает процессорного времени для обработки
запросов. А время это съедает Апач, который постоянно поллит сервер "а не сделал
ли ты запрос?". Собственно, решение или поставить MySQL не из портов, или
опустить приоритет апача тоже.

Неактивен

 

#5 15.12.2007 21:43:25

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast, если это то что надо:
Этот MySQL сервер работает 0 дней, 19 часов, 8 минут и 44 секунд. Он был запущен Дек 15 2007 г., 02:27.

Трафик     в час
Принято 230 MB 12 MB
Послано 2 GB 123 MB
Всего 3 GB 135 MB
Соединения o в час %
max. concurrent connections 160   ---  --- 
Неудачные попытки 690   36.04   0.50%
Отменены 27 k 1,398.65   19.49%
Всего 137 k 7,175.40   100.00%

---------------------

paulus,
можете нам помочь настроить сервер под оптимальные настройки?

Неактивен

 

#6 15.12.2007 23:42:25

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Купили новый сервер. Помогите настроить MySQL.

Неактивен

 

#7 16.12.2007 01:34:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Данные, которые Вы привели это статистика соединений. Из этого виден только тот факт, что соединения разрываются. Полезной будет информация, которую Вы можете получить выполнив SQL-запросы в консоли MySQL или в phpmyadmin.
Запросы:
SHOW FULL PROCESSLIST;
SHOW STATUS;
SHOW VARIABLES;

Если Вы хотите, чтобы мы выполнили работы на Вашем сервере, то пишите на sakila@sqlinfo.ru, услуга платная, детали по адресу: http://sqlinfo.ru/services/

Неактивен

 

#8 16.12.2007 13:48:49

VGrey
Участник
Зарегистрирован: 16.12.2007
Сообщений: 3

Re: Купили новый сервер. Помогите настроить MySQL.

paulus написал:

Про FreeBSD я уже писал багу. У них дико неправильно собран MySQL в портах,
просто дико неправильно. Обратите внимание на его базовый приоритет. +11.
С таким приоритетом он просто тупо не получает процессорного времени для обработки
запросов. А время это съедает Апач, который постоянно поллит сервер "а не сделал
ли ты запрос?". Собственно, решение или поставить MySQL не из портов, или
опустить приоритет апача тоже.

У них, это у нас smile - я из мира bsd. Не ошиблись ли Вы? Только-что посмотрел на 8 серверах, где апач и MySQL установлены из портов. На всех восьми они запускаются по умолчанию с одинаковым приоритетом. На осальный сервах смотреть нет смысла. Я что-то неправильно ставил из портов?

paulus написал:

http://dev.mysql.com/downloads/mysql/5.0.html#freebsd

Вы точно знаете с какими опциями оно собрано? А необходимые пачи наложены? Какие именно? С поддержкой какй библиотеки нитей оно собрано? А если на моей конкретной задаче бОльшую производительность дает другая библиотека? Включена поддержка всех кодировок и сравнений? А если в моей задаче используется только одна кодировка и одно сравнение? А если мне не нужен ни OPENSSL, ни NDB? Зачем мне в памяти код, который никогда не будет использован? Чтобы быть увереным в оптимальной работе приложения, в мире bsd принято собирать самому...

  Я не берусь судить о Linux, поскольку для меня родная FreeBSD. Но нельзя переносить подходы одной сисемы на другую.

paulus написал:

Про FreeBSD я уже писал багу.

Искал, поиск мне не помог. Дайте, пож., ссылку.

paulus, если я Вас чем-то задел, можете этот пост удалить. А можете написать мне на почту, или постучать в асю, у меня есть для Вас предложение.

Неактивен

 

#9 16.12.2007 14:34:28

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Описание подобной проблемы есть в сети:
http://jeremy.zawodny.com/blog/archives … ment-16277
http://jeremy.zawodny.com/blog/archives … ment-26683

О сборке MySQL под BSD написано в Platform Notes, по умолчанию native библиотека тредов. Как по умолчанию собрана в портах, я не знаю. Вопрос в том, что лучше - дефолтная сборка из портов или tar.gz. Кстати в дефолтной сборке FreeBSD присутствуют также все кодировки. Собирать самому - это другое, к теме не имеющее непосредственного отношения. К теме ближе, например, приобрести сборку MySQL Enterprise с поддержкой - она протестирована на большой нагрузке и в случае чего саппорт поможет решить проблемы производительности.

О патчах, смотря о каких Вы говорите - включены те, которые прошли через систему багфиксов MySQL AB.

Вот что на одном из FreeBSD серверов:
  PID USERNAME      PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
94211 mysql          29   0   131M    98M RUN      3:07  1.03%  1.03% mysqld
15434 www            18   0 21008K 13888K lockf    0:00  0.78%  0.78% httpd
33635 www             2   0 22388K 15428K poll     5:57  0.29%  0.29% httpd

Я так понимаю nice у всех нулевой, но приоритет расставляется планировщиком.

Неактивен

 

#10 16.12.2007 15:57:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Купили новый сервер. Помогите настроить MySQL.

Нет, ничем не задели. Просто у меня на FreeBSD при дефолтных настройках
mysqld запускается с приоритетом +11, что не позволяет запускать на этой
же машинке вообще что-то кроме mysql, т.к. иначе это что-то сразу съедает
весь проц.

То, что Вы из мира FreeBSD - не значит, что именно Вы делаете файлы,
которые кладутся в порты smile Собственно, вероятность этого очень мала smile

Неактивен

 

#11 16.12.2007 16:32:53

VGrey
Участник
Зарегистрирован: 16.12.2007
Сообщений: 3

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast написал:

Описание подобной проблемы есть в сети:
http://jeremy.zawodny.com/blog/archives … ment-16277
http://jeremy.zawodny.com/blog/archives … ment-26683

В указаных Вами постах я не нашел упоминания о:

paulus написал:

У них дико неправильно собран MySQL в портах, просто дико неправильно.

rgbeast написал:

О сборке MySQL под BSD написано в Platform Notes, по умолчанию native библиотека тредов.

Особенно актуально в этой ссылке упоминание FreeBSD 2.x. Я такй уже не застал... Хотя, по сути правльно, что нормальная работа MySQL  под FreeBSD больше должна заботить не MySQL AB а FreeBSD-сообщество.

rgbeast написал:

Как по умолчанию собрана в портах, я не знаю. Вопрос в том, что лучше - дефолтная сборка из портов или tar.gz. Кстати в дефолтной сборке FreeBSD присутствуют также все кодировки. Собирать самому - это другое, к теме не имеющее непосредственного отношения.

В портах MySQL собирается с WITH_LINUXTHREADS=yes.

Я хочу сказать, что, например, такая сборка из портов:
make WITH_CHARSET=cp1251 WITH_XCHARSET=cp1251 WITH_COLLATION=cp1251_general_ci WITHOUT__OPENSSL=yes WITHOUT_NDB=yes WITHOUT_ARCHIVE=yes WITHOUT__CSV=yes WITH_INNODB=yes install clean

для FreeBSD лучще установки отсюда:
http://dev.mysql.com/downloads/mysql/5.0.html#freebsd

rgbeast написал:

К теме ближе, например, приобрести сборку MySQL Enterprise с поддержкой - она протестирована на большой нагрузке и в случае чего саппорт поможет решить проблемы производительности.

Вполне возможно, что для начинающих это правильный путь. С другой стороны материальная поддержка MySQL AB - это правильно. Но стоит ли это делать ради нескольких процентов увеличения производительности? Может, лучше потратить эти деньги на более мощное железо? Для начинающих - да, согласен однозначно.

rgbeast написал:

О патчах, смотря о каких Вы говорите - включены те, которые прошли через систему багфиксов MySQL AB.

Я имел ввиду не патчи, относящиеся к логике MySQL - в этом плане MySQL AB, и никто другой. Я говорил о патчах в директории files порта. Патчи, которые учитывают особенности архитектуры именно FreeBSD. Установленый tar.gz от MySQL AB или собраный из исходников MySQL тоже будет работать, но спать спокойней со сборкой из портов, со своими опциями, конечно. И данных о том, что мы потеряем в производительности в этом случае, у меня тоже нет. Поэтому замечание, что

paulus написал:

У них дико неправильно собран MySQL в портах, просто дико неправильно.

считаю несколько ... надуманым. Но вполне простительным для человека, далекого от FreeBSD.

Неактивен

 

#12 16.12.2007 19:12:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Получил по email SHOW VARIABLES и SHOW STATUS.

1. Попробуйте увеличить thread_cache
thread_cache_size=64

2. Уменьшите max_connections до 256, все равно при 600 соединений ничего не работает. Задача в том, чтобы каждое соединение отрабатывало быстро и их число не накапливалось.

3. Установите
log_slow_queries
long_query_time=1

это позволит записать в log запросы, которые выполняются медленно

4. Видно, что много блокировок возникает

5. Какой тип таблиц MyISAM или Innodb?

6. Пришлите пожалуйста SHOW GLOBAL STATUS;

Неактивен

 

#13 16.12.2007 19:51:57

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

По 5-му вопросу, используется тип таблиц: MyISAM

По 6-му вопросу: Отослал!

Неактивен

 

#14 16.12.2007 20:24:33

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Очень странно, в переменных ненулевые значения для статуса Innodb, например Innodb_buffer_pool_read_requests. Также статистика говорит, что у Вас используются транзакции: Com_begin, Com_commit ненулевые.
Если innodb используется для части таблиц, то имеет смысл увеличить его буффер:
innodb_buffer_pool_size=128M

Также стоит увеличить максимальный размер временной таблицы в памяти:
max_heap_table_size=32M

Кроме того, стоит увеличить:
join_buffer_size=4M
read_buffer_size=2M
read_rnd_buffer_size=1M
max_tmp_tables=128

Внедрите все изменения в my.cnf (включая log-slow-query) и перезапустите сервер MySQL.

Неактивен

 

#15 16.12.2007 22:15:47

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast, скажите пожалуйста, а почему Значения у некоторые Переменных (это в "Показать состояние" или Server Status),
имеют красный цвет, а некоторые Зеленый?
К примеру те что красные:

Slow_queries      24
Innodb_buffer_pool_reads      337 
Handler_read_rnd      19 M
Handler_read_rnd_next      651 M
Created_tmp_disk_tables      96 k
Key_reads      992 k
Select_full_join      106
Opened_tables      28 к
Table_locks_waited      3,353

всё что зеленое имеет значение 0

Отредактированно 0lik.ru (16.12.2007 22:19:34)

Неактивен

 

#16 16.12.2007 22:31:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Сами переменные не имеют цвета. phpmyadmin подсвечивает красным переменные, которые свидетельствуют о низкой производительности.

Неактивен

 

#17 16.12.2007 22:36:25

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast, а понятно (на счёт красного цвета).

А всё то что Вы мне указали и по рекомендовали настроить, я смогу сделать скорее всего только завтра (в понедельник 17 декабря).
И тогда сразу отпишу тут что да как стало.

Спасибо Вам за Помощь!

Неактивен

 

#18 20.12.2007 00:10:53

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast, всё сделали (немного с запозданием) как Вы сказали и перезагрузили. В phpmyadmin появились некоторые переменные которые также стали подсвеченными красным цветом (т.е. как Вы сказали "свидетельствуют о низкой производительности") которых ранее не было
все переменные подсвеченые красным цветом:
Slow_queries     36 
Innodb_buffer_pool_pages_dirty     3
Innodb_buffer_pool_reads      144 
Handler_read_rnd         911 k
Handler_read_rnd_next         50 M
Created_tmp_disk_tables        6 k
Key_reads              65 k
Select_full_join             11 
Opened_tables               1 k
Table_locks_waited             284 

Что Вы еще можете посоветовать что бы оптимизировать окончательно MySQL?

Спасибо!

Неактивен

 

#19 20.12.2007 01:06:36

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Получается оптимизация навскидку, Вы мне параметры черного ящика, я Вам тоже некие цифры.

Slow_queries     36
Select_full_join             11 
Created_tmp_disk_tables        6 k
это к тому, какие у Вас запросы и ключи используются, с последним можно немного бороться, увеличив максимальный размер временной таблицы в памяти:
max_heap_table_size=32M

Кроме того, посмотрите, что у Вас в slow-query-log. Это файл server-name-slow.log в /var/db/mysql/

Про innodb Вы говорили, что не используется, но так как по факту используется, то сделайте
innodb_buffer_pool_size=64M

Неактивен

 

#20 21.12.2007 11:19:40

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

Что то теперь совсем стало плохо, уже при 150 одновременно находящихся на сайте, сервер просто не отвечает.

>>Кроме того, посмотрите, что у Вас в slow-query-log
Вот смотрю, честно говоря мне мало что говорит информация в данном файле, ранее не сталкивались с этой проблемой и небыло нужды глядеть. Подскажите пожалуйста, на что обратить внимание в данном файле?

Неактивен

 

#21 21.12.2007 11:34:12

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

В файле slow-query-log запросы к БД, которые выполняются медленно. Возможно запросы к базе составлены некорректно, или не хватает ключей в таблицах. Надо смотреть отдельно каждый запрос в этом файле.

Посмотрите, хватает ли памяти на сервере при текущих настройках. Это можно сделать командной free в командной строке

Неактивен

 

#22 21.12.2007 12:42:30

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

или не хватает ключей в таблицах

А как их добавить? или что необходимо для этого сделать?

Возможно запросы к базе составлены некорректно

Используется DLE движок на сайте. На многих сайтах он установлен но у них проблем с этим нет (при посещаемости в 10-20тыс./сутки), скорее всего всёже не в запросах дело.

Посмотрите, хватает ли памяти на сервере при текущих настройках. Это можно сделать командной free в командной строке

Вот информация памяти, что то уж больно много жрет? или так и должно?
Использование памяти    Итого Использовано   Свободно   Общий       Буфер            Кэшировано     Использование
1.99 ГБ                           1.98 ГБ                      16.34 МБ    71.19 МБ    112.19 МБ      94.63 МБ          94.56%

Использование подкачки
Итого                      Использовано           Свободно     Использование
4.00 ГБ                   332.00 КБ                4.00 ГБ          0.01%

Неактивен

 

#23 21.12.2007 12:52:34

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

память использована вплонтую (так как кэшировано+свободно всего 110 Mb. Подкачка не используется, значит памяти все же хватает, хотя и впритык. Наберите top, посмотрите какие процессы жрут память.

Неактивен

 

#24 21.12.2007 13:39:16

0lik.ru
Участник
Зарегистрирован: 15.12.2007
Сообщений: 23

Re: Купили новый сервер. Помогите настроить MySQL.

rgbeast,

Наберите top, посмотрите какие процессы жрут память

Отпарвил Вам на мыло информацию о процессах

Неактивен

 

#25 22.12.2007 01:49:30

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Купили новый сервер. Помогите настроить MySQL.

Судя по процессам, mysql съедает только 136 мегов реальной памяти. Возможно память съедает httpd, perl или java. ps auxwf даст больше инфы, но очевидно mysql не является узким местом по памяти. Проблем в том, что httpd висят и ждут чего-то, видимо от mysql. При оптимизации Вам надо будет учитывать и конфигурацию httpd.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson