Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как понять почему тупит MySQL?
Просмотров: 362
 
Ответов: 9
Сервер C2Q x 2 8G ram. RAID 5( 3 hdd ), mysql 5.1.26-rc \ Red Hat 4.1.2-14
Когда собирали(два года назад) были молодыми и глупыми, но сервер вообще влезает в свои параметры.
Итак имеем относительно высокую нагрузку на MySQL — 601.90 запросов в секунду, из них апдейты\инсерты — 2%, а ~70% — stmp prepare\execute\close, на долю чистого селекта остается 34.84%
И где-то неделю назад база научилась умирать — создавались кучи процесов которые работали по полчаса.
Странность 1 — ровно через час все чинилось САМО
В общем начались разгребания состояния сервера.
Как один из пунктов этой программы в код движка был добавлен дамп времени выполнения операций в базу обратно в эту базу.
Этот код работал для запросов которые заняли дольше 0.1 сек — slow_log их еще не видит, но это уже тормоза…
В общем тут и пошли странности — самый обычный запрос, который, запусти его ручками, выполняется 0.0001 репортит в базу что он выполнялся 0.5 или даже ДВЕ секунды…
Странность номер два — тормоза идут мелкими сериями, по 5-10 тормознутых запросов, примерно раз в 11 секунд.
И в этот момент, обычно, только несколько таблиц торомозят( тоесть я вижу пачку по сути одинаковых запросов в логе в этот момент)
Так как 99 тормозных запросов приходились на innoDB таблицы были проведены некоторые танцы — включен file_per_table и таблицы из обшей свалки(11Гб) перевелись в свои маленькие файлики( конечный общий размер 4Гб, фрагментация там была дайбоже )
LA сервера, 0.9
утилизация винта — 15-20%
Конфиг тут
Свободная память — есть.
Идей откуда тормоза и что делать — нет
Как вариант — Percona или MariaDB (5.1.6?)
Бонус пак — когда mysql зависает — конекты от него не отваливаются, процесы не завершаются.
Никак кроме как kill -9....
> Рейд держит нормальная железякя
>LSI
уже смешно. батарейки и памяти там ведь нет?
>RAID5
>innoDB
>утилизация винта — 15-20%
>innodb_flush_log_at_trx_commit = 2
>самый обычный запрос… ДВЕ секунды…
Запись в RAID5 уже по необходимым логическим операциям получается сложная, а в реализации LSI все обычно получается еще хуже. Как тут уже говорили, для баз данных предпочтительней RAID1,RAID10 и вариации.
Остается снизить интенсивность операций записи. Попробуйте в первую очередь
innodb_flush_log_at_trx_commit=0
innodb_support_xa=0
tmpdir = /tmp/ — перенесите в tmps
Во вторую очередь более опасные параметры:
innodb_doublewrite=0
delay_key_write=ALL
innodb_flush_method=nosync — вообще не знаю использует ли кто-то это. значение даже недокументировано, но кое-где можно найти его использование. если требования к производительности высокие и сервер не перегружается внезапно ( а с чего бы ему перегружаться в хорошем датацентре?), то можно использовать.
почитайте про каждый параметр, потому что такое изменение — компромисс между скоростью и надежностью хранения данных.
bin-log — точно знаете зачем он вам нужен?
query_cache_size = 0 — неужели он у вас вообще неэффективен? поставьте ну хотя бы 16Мб.
sort_buffer_size = 256M — с этим поосторожнее, он выделяется целиком в каждом обработчике вне зависимости от реальной потребности. При перегрузке сервера запросами возможно исчерпание памяти и убитие в первую очередь mysqld.
www.mysqlperformanceblog.com/ — всяческие тюнинги конфига там детально разжеваны
И я бы попробовал 5.5 версию на денек, там innodb заметно посвежее. Ну и собирать icc.
Потом уже обсуждалась тема переноса таблиц в оперативку — в поиск
1. Для начала советую запустить mysqltuner.pl и посмотреть что он расскажет
2. Включить slow_query_log в mysql и посмотреть там
3. Не забывать что выполнить минутный запрос за 0.0001 секунду можно сразу же после этого самого запроса. Банально работает кеш. Это я к тому, что если Вы конфиг писали «добавить нолик — работает быстрее», то возможно не подозреваете что выполняя подряд один и тот же запрос, получите совсем разные цифры. Второе выполнение будет почти мгновенным.
4. размер базы под 11Гб, 2% идет на апдейты, а сбрасываете ли вы индекс перед апдейтом? Если таблица большая, то такой апдейтик запросто может ее прогрузить до почек.
5. RAID тут вряд ли виновен, все же 600 запросов в секунду, из которых две трети служебные — это не такая уж и большая нагрузка.
Ну и если найдете узкие места в первых 5 пунктах, проверяйте запросы EXPLAIN'ом, оптимизируйте их.
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться