mysql грузит диск сервера

12
SP
На сайте с 04.02.2009
Offline
134
11433

Всем привет, прошу помощи у гуру администрирования.

Проблема: Есть сайт на дле с посещаемостью ~ 35-50 к человек, последнее время начались тормоза, задержки перед загрузкой сайта, открываешь страницу, ничего не происходит пару секунд, потом загружается.

Глянул по newrelic, лаги а собственно и Load average скачет, и в это время использование диска доходило вплоть до 90%.

Опытным путем выяснил что грузит Mysql, ковырял конфиги, пробовал программой mysqltuner.pl, и сегодня все стало еще хуже, я просто скопировал конфиг с интернета для серверов 4-8 гб озу, и магия, все стало работать куда шустрее, диск теперь грузится пиками и до 50-60%, сайт вроде работает, но немного тормознуто. В топ параметр %wa 0.5-3, но прыгает и до 20 время от времени.

Процессор используется на 15-30%, озу 10-15% из 6GB.

Собственно, подскажите, как разгрузить диск, ускорить работу сайта задействовав например озу?

Конфиг MSQL

# Remember to edit /etc/mysql/debian.cnf when changing the socket location.

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

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
#
# * Basic Settings
#
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
language = /usr/share/mysql/english
skip-external-locking
skip-name-resolve
low-priority-updates
bind-address = 127.0.0.1

#Tuning
key_buffer = 1200M
thread_stack = 512K
thread_cache_size = 32
table_cache = 60000
thread_concurrency = 12
net_buffer_length = 32

myisam-recover = BACKUP
query_cache_limit = 2M
query_cache_size = 256M

myisam_sort_buffer_size = 256M
tmp_table_size = 256M
max_heap_table_size = 128M

read_buffer_size = 2M
read_rnd_buffer_size = 4M

sort_buffer_size = 4M
join_buffer_size = 8M

max_allowed_packet = 256M
max_sort_length = 512
max_connections = 120
max_connect_errors = 50
max_user_connections = 25

#general_log_file = /var/log/mysql/mysql.log
#general_log = 1

log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1

#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 300M
innodb_buffer_pool_size = 64M
innodb_additional_mem_pool_size = 32M
innodb_file_io_threads = 8
innodb_lock_wait_timeout = 50
innodb_log_buffer_size = 20M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED

#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/

[mysqldump]
quick
quote-names
max_allowed_packet = 256M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer = 32M

!includedir /etc/mysql/conf.d/

ps где спойлер?

Заранее благодарю, могу материально.

Evas EvaSystems
На сайте с 31.05.2012
Offline
116
#1

Укажите мускулю не обращатся на файл подкачки, а использовать ОЗУ.

Для этого используйте memlock, разместить его следует в секции [mysqld]

[mysqld]
#
# * Basic Settings
#
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
language = /usr/share/mysql/english
skip-external-locking
skip-name-resolve
low-priority-updates
memlock
bind-address = 127.0.0.1

Макс. разгрузить не сможете, сами базы то физически хранятся на HDD, логи кстати пишутся туда-же.

Системный администратор Linux. Настройка, сопровождение и оптимизация серверов. Отзывы - searchengines.guru/ru/forum/1017473
[Удален]
#2

1. возможно диск умирает (чтение медленных секторов создает эффект "грузилова" диска)

2. увеличьте буфера в my.ini

[Удален]
#3

show processlist можно в пики?

база myisam или innodb?

На вашем месте я бы обновил движок, если это невозможно,

то отключил бы лишние модули, закешировал бы все что можно

SP
На сайте с 04.02.2009
Offline
134
#4

EvasСпасибо, Выставил, буду смотреть, пока шустро, но народу на сайте уже поубавилось.

donriga innodb кажется.

Да ребят, я нубяра полная, прошу относиться снисходительней :(

sunca
На сайте с 05.12.2010
Offline
77
#5

Вам кто-то уже правил сервер до этого? Уверены что InnoDB?

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

Нужно смотреть сервер. Причины могут быть разные.

Не стоит плодить сущности без необходимости
T
На сайте с 09.12.2011
Offline
55
tls
#7
max_connections = 120
max_user_connections = 25

Уверены?

Также рекомендую остановить mysql и httpd и протестировать скорость диска.

dd if=/dev/zero of=/test.deleteme bs=1G count=1 oflag=direct

или

dd if=/dev/zero of=/test.deleteme bs=64k count=16k conv=fdatasync

После каждого теста удалить файл /test.deleteme .

И посмотреть статистику mysql в phpmyadmin.

SP
На сайте с 04.02.2009
Offline
134
#8
Вам кто-то уже правил сервер до этого? Уверены что InnoDB?

Не уверен, пока все что сделал, чутка увеличил количество кешируемых таблиц, и перенес БД в ОЗУ как рекомендовал Evas.

Пока используется 36% памяти, нагрузка на диск снизилась до 30-50, и на загрузку сайта вроде не влияет. Нагрузка на проц повысилась на 10-20% что не страшно. В целом все сегодня работало удовлетворительно.

Всем спасибо.

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

Тест диска:

1+0 records in

1+0 records out

1073741824 bytes (1.1 GB) copied, 4.86703 s, 221 MB/s

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

B
На сайте с 30.07.2012
Offline
3
#9

DLE engine = MYISAM

key_buffer = 1200M

сколъко реальное значение по тюнеру??

query_cache_size = 256M

кеш работает вообше? что тюнер показывает? %??

read_buffer_size = 2M

sort_buffer_size = 4M

опрокинъ до 1М

#read_rnd_buffer_size = 4M

можно убратъ

join_buffer_size = 8M

что тюнер показывает реально?

иннодб вообше таблицы естъ?

может ее тогда отключитъ если неработает??

innodb_buffer_pool_size = 64M
innodb_additional_mem_pool_size = 32M
innodb_file_io_threads = 8
innodb_lock_wait_timeout = 50
innodb_log_buffer_size = 20M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT

#log_slow_queries = /var/log/mysql/mysql-slow.log

это убратъ, и вообше поставъ mytop, и смотри им статистику работы базы.

а так если прогнать тюнер он все покажет

https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh

главное читать :)

Den73
На сайте с 26.06.2010
Offline
523
#10

тс, так не пойдет, вы тупо скопипастили конфиг который я когда то давно запостил в блоге, советую обратится к специалисту для разовой настройки сервера.

12

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