Имеется выделенный сервер для mysql. Ядро биллинга тож стоит на freebsd но на отдельном сервере. Последнее время стало очень сильно притормаживать админка, по несколько минут ждем пока откроется выбранный абонент, иногда даже netflow не тем пользователям пишется (трафик) когда сильно тормозит и тд. Проблему нашли. На сервере mysql одно ядро из восьми постоянно загружено на 100%. Посмотрели командой show processlist . В нем 20 процессов от сервера с ядром 19 в слипе и один работает и переодически запросы меняются.
Подскажите как можно разгрузить mysql server ?
Какие таблицы в базе нетапа можно отчищать?
Можно ли вообще на FreeBSD добиться распределения по ядрам если запрос идет с одного места (ядра)?
ПС. Жесткий диск sas не загружен (проверено gstat) . Другие ядра используются когда пользователи смотрят свою статистику. База весит уже порядка 40ГБ
Может перескочить на линукс, если стоит то на какой на данный момент выбор стоит между gentoo и debian
Стоит ли ядро переводить тоже на линукс?
Mysql на FreeBSD 7.3 2-процессора (8 ядер) проблема!
-
- Сообщения: 120
- Зарегистрирован: Вс ноя 22, 2009 02:41
- Откуда: Чебоксары
Re: Mysql на FreeBSD 7.3 2-процессора (8 ядер) проблема!
show full processlsit какой выполняющийся дольше всего запрос показывает?anclbob писал(а): Какие таблицы в базе нетапа можно отчищать?
Можно ли вообще на FreeBSD добиться распределения по ядрам если запрос идет с одного места (ядра)?
Может перескочить на линукс, если стоит то на какой на данный момент выбор стоит между gentoo и debian
Стоит ли ядро переводить тоже на линукс?
Mysql не умеет распределять выполнение 1 запроса на несколько ядер, ни на одной OS. Линукс тут не поможет.
1. Поправить индексы на discount_transactions*: viewtopic.php?t=7624#50041
2. Заархивировать закрытые периоды в таблицы типа MyISAM: http://www.netup.ru/UTM5/articles/archive_table.php
3. Запаковывать архивные таблицы myisampack'ом (с восстановлением индексов через myisamchk).
Производительность улучшится в разы.
ок попробуем.
по поводу того что mysql не умеет по нескольким ядрам один запрос разносить это точно?
Читал
=========================================
Мы конечно уже обрадовались, думается, ну вот же он – наш Database server, но-но, не тут то было, а как же my.cnf?
Открываем /etc/my.cnf, и начинаем стучать в бубен (то есть определять конфигурационные переменные MySQL):
thread_concurrency. Если у вас много памяти и много таблиц, то для увеличения производительности, при запуске сервера рекомендуется использовать следующие формулы, учитывающие специфику работы mysql под различные ОС:
Для FreeBSD: thread_concurrency = (кол-во процессоров)*(кол-во ядер в одном процессоре)
Для Linux: thread_concurrency = (кол-во процессоров)*(кол-во ядер в одном процессоре)*3
Почему на Linux можно давать можно и нужно давать больше потоков, чем на FreeBSD? Это связано с тем, что Linux умеет распределять и управлять потоками между ядрами, а FreeBSD не умеет, зато FreeBSD умеет эффективно распределять процессы, чего, в свою очередь, не умеет Linux.
взято тут
http://web-scalability.com/2008/05/30/m ... %BC%D1%83/
===============================================
Т.е. тут не совсем верная инфа?
по поводу того что mysql не умеет по нескольким ядрам один запрос разносить это точно?
Читал
=========================================
Мы конечно уже обрадовались, думается, ну вот же он – наш Database server, но-но, не тут то было, а как же my.cnf?
Открываем /etc/my.cnf, и начинаем стучать в бубен (то есть определять конфигурационные переменные MySQL):
thread_concurrency. Если у вас много памяти и много таблиц, то для увеличения производительности, при запуске сервера рекомендуется использовать следующие формулы, учитывающие специфику работы mysql под различные ОС:
Для FreeBSD: thread_concurrency = (кол-во процессоров)*(кол-во ядер в одном процессоре)
Для Linux: thread_concurrency = (кол-во процессоров)*(кол-во ядер в одном процессоре)*3
Почему на Linux можно давать можно и нужно давать больше потоков, чем на FreeBSD? Это связано с тем, что Linux умеет распределять и управлять потоками между ядрами, а FreeBSD не умеет, зато FreeBSD умеет эффективно распределять процессы, чего, в свою очередь, не умеет Linux.
взято тут
http://web-scalability.com/2008/05/30/m ... %BC%D1%83/
===============================================
Т.е. тут не совсем верная инфа?