LINUX.ORG.RU
ФорумAdmin

MySQL сильно потребляет процессор


2

1

Доброго времени суток, уважаемые коллеги. Столкнулся я вот с такой проблемой: хотели увеличить скорость работы сайта, за счёт увеличения кэшей в озу и перехода на SSD переехали c: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz 8 GB RAM 200GB HDD на сервер: AMD Opteron 3280 8 x 2,4 GHz 32 GB RAM 250GB SSD

А получили напротив жёсткие тормоза в часы пик. Сейчас пишу пост, всё летает, а по вечерам - тормоза. MySQL жрёт ЦПУ ядер 5, load average 12-15 иногда даже до 30 доходит. Наши характеристики в часы пик ~75 посетителей онлайн, количество запросов в секунду почему-то после переезда выросло с 8 до 30, в то же время посещаемость сильно не изменилась.

Уже так и этак колдую с конфигом, c mysqltuner'ом и руками, немного ситуацию улучшил конечно, но проблема не уходит, скорость в часы пик ниже чем до переезда. Вот какой конфиг получился:

[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mysql
skip-external-locking

key_buffer		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 64
myisam-recover         = BACKUP
#max_connections        = 300
query_cache_limit	= 1M
expire_logs_days	= 10
max_binlog_size         = 100M

#important optimize
table_cache             = 800
query_cache_size       = 512M
join_buffer_size       = 1G
memlock

#innidb configure
innodb_buffer_pool_size = 16G
innodb_log_buffer_size=4M
#innodb_flush_logs_at_trx_commit=2
innodb_thread_concurrency=50
innodb_flush_method=O_DIRECT
innodb_file_per_table
innodb_additional_mem_pool_size = 32M

max_heap_table_size = 256M
tmp_table_size = 256M
low_priority_updates = 1
key_buffer_size = 256M
max_length_for_sort_data = 1048576
sort_buffer_size = 268434432
read_rnd_buffer_size = 268434432

server-id=XXXXXXX
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=XXXXXX
binlog_do_db=XXXXX
log_slave_updates=1
auto_increment_offset=2
auto_increment_increment=2

bind-address            = XXX.XXX.XXX.XXX

log-slow-queries=/var/log/mysql/slow.log
relay-log = /var/log/mysql/slave-relay-bin
relay-log-index = /var/log/mysql/slave-relay-bin.index
slave-skip-errors = all

[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

[mysql]
[isamchk]
key_buffer		= 16M

!includedir /etc/mysql/conf.d/

character_set_server  = utf8
collation_server      = utf8_general_ci

Как можно решить проблему? (базы на innodb, mysql 5.5)



Последнее исправление: whitemaster (всего исправлений: 2)

Проанализировать запросы в базу, в первую очередь.
Оторвать руки разработчикам, во вторую.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

А есть способ автоматически выяснить, где требуются индексы? join'ы запросы дурацкие, их быстро мы поправить не сможем.

whitemaster
() автор топика
Ответ на: комментарий от fjfalcon

В mysql этого делать не нужно...

vacuum сделайте в mysql для начала

quest ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.