powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят таблицы mysql
25 сообщений из 25, страница 1 из 1
Тормозят таблицы mysql
    #38427595
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте коллеги,

Пишу сюда за помощью.
Итак, имеем выделенный сервер hetzner (Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz 1600.000 Mhz X 8, 16Gb оперативка, 3Tb HDD)
На нем крутиться один сайт (посещалка около 8000 тыс. человек/сутки)

Для сайта используются две mysql базы данных. Одна для форума (ipb - размер 1,4Гб) с ней проблем нет, все работает как надо, не тормозит.

Вторая база собственного сочинения для нужд сайта. Имеются таблицы MyISAM и InnoDB. Размер этой базы 2,6 гб, свыше 20млн. строк. Самая большая таблица около 1Гб (InnoDB) - ~3,6 млн. записей.
Все таблицы в этой базе очень активно используются. SELECT, INSERT, UPDATE, DELETE.

Суть проблемы. Имеются несколько относительно мелких таблиц (1-3мб, 5-10 тыс. строк). Таблицы используются на SELECT постоянно, а INSERT, UPDATE или DELETE случаются пару раз в сутки. Так вот когда происходит изменение таблицы (NSERT, UPDATE или DELETE) случается завис всей mysql базы на 3-4 минуты. Причем если далее опять работать с этой таблицей - все ок. Такое впечатление, что при первом вызове таблицы происходит ее перемещение в оперативку и далее работа идет как надо. Но если оставить эту таблицу в покое на несколько часов, то снова произойдет зависон при попытке выполнить NSERT, UPDATE или DELETE.

С самой большой таблицей (1Гб (InnoDB) - ~3,6 млн. записей), что характерно, таких проблем нет. Но там редко бывает чтобы с таблицей ничего не делали. SELECT происходит ежесекундно, а INSERT, UPDATE, DELETE ежеминутно.

В чем может быть дело? Как исправить ситуацию.. Сервер настраивали уже несколько отличных спецов с фри-ланса. Результаты были, но недолго. Дело в том, что база растет постоянно, в день по 10-15 тыс. записей.

Я думаю, взять еще один сервер и вынести на него часть таблиц, или даже базу полностью...
Или использовать FEDERATED типы таблиц..
Что посоветуете??

Инфо из закладки "состояние" в phpmyadmin:
Трафик 1 ø в час
Принято 70 ГБ 151 МБ
Отправлено 2,521 ГБ 5,437 МБ
Всего 2,591 ГБ 5,589 МБ
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38427622
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerSИмеются таблицы MyISAM и InnoDBЗачем такая смесь? Почему не все InnoDB?
HomerSИмеются несколько относительно мелких таблицКонкретно эти таблицы на каком движке?
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38427665
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS,

Настройки Мускуля ограничивают его память, и в первую очередь на объем кешей и гораздо важнее объема памяти самого сервера. Если вся база 2.6 гектара, то почему её всю не запихнуть в память, выделив мускулю скажем гектар 8-10 с учетом объема индексов?

В этом случае, ситуация - повторяется?

Смешанные движки - зло и если такое делается, то надо бы хорошо представлять зачем. Сложно перевести всё в InnoDb? Пгобовали?

Фрагментация БД и файлов ОС. Проверяли? Если часто идут операции INSERT, DELETE (особенно последняя), то неплохо периодически делать optimize table.

Но, в целом, требуется игораздо больше подробностей, чтобы сказать что-то внятно.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38427761
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИмеются несколько относительно мелких таблиц (1-3мб, 5-10 тыс. строк). Таблицы используются на SELECT постоянно, а INSERT, UPDATE или DELETE случаются пару раз в сутки. Так вот когда происходит изменение таблицы (NSERT, UPDATE или DELETE) случается завис всей mysql базы на 3-4 минуты.

Это нормально для myisam. Не факт что с innodb ситуация будет лучше в целом, хотя отдельные операции очевидно будут выполняться параллельно без зависаний.

авторПричем если далее опять работать с этой таблицей - все ок. Такое впечатление, что при первом вызове таблицы происходит ее перемещение в оперативку и далее работа идет как надо.
А что конкретно ваши "спецы из фриланса" сделали для стабилизации кеша ?
Обычно стараются занизить количество apache-ей. То есть, не так чтобы отдать им всю оставшуюся память, а так чтобы их было минимально возможное число. Это относится и к любым обработчикам php, если аpache не используется.
Сделать так чтобы ежедневные бекапы не смывали кеш.

авторЯ думаю, взять еще один сервер и вынести на него часть таблиц, или даже базу полностью...
дельная мысль, кстати. 100% стабилизирует кеш и оградит его от замещения файлами сайта.

С точки зрения администратора лучше чем эти меры, как правило, не сделать ничего.А с точки зрения программиста еще можно попытаться анализировать запросы подробнее. Но это ведь не ваш метод, да?

авторвыделенный сервер hetzner (Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz 1600.000 Mhz X 8, 16Gb оперативка, 3Tb HDD)Как я понимаю, они это то, что продают под названием EX-4. Возможно, стоило взять EX-40 за те же деньги, но с процессором похуже, зато 32 гб RAM. Для mysql и веба это почти всегда лучше.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38427988
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы!!

Попробую все таблицы перевести в InnoDB.

Изначально все было в MyISAM, но потом, часть таблиц, наиболее активно использующихся и тяжелых перевел в InnoDB.
Я не сильный спец в MySQL, и точно не помню, почему пришлось так сделать, видимо что-то где-то прочитал ((

optimize table делается, с этим все ок.

Тормозят как InnoDB, так и MyISAM таблицы. Одинаково..

авторА что конкретно ваши "спецы из фриланса" сделали для стабилизации кеша ?
Точно не знаю.. так как не очень разбираюсь во всем этом. Но после таких настроек, как правило все становилось намного лучше, пока база снова не вырастала ((

авторКак я понимаю, они это то, что продают под названием EX-4. Возможно, стоило взять EX-40 за те же деньги, но с процессором похуже, зато 32 гб RAM. Для mysql и веба это почти всегда лучше.
Да, EX-4. Когда его брал, база была в два или даже в три раза меньше и все летало.
Сейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе..

авторС точки зрения администратора лучше чем эти меры, как правило, не сделать ничего.А с точки зрения программиста еще можно попытаться анализировать запросы подробнее. Но это ведь не ваш метод, да?
Скрипты и запросы у меня и так вроде проще некуда.. И при обычной работе проблем нет. Проблемы возникают, как я писал выше, когда таблицу долго не изменяют.

А вообще, понимаю, что мне нужен спец именно по MySQL, который бы все посмотрел и дал конкретные советы...
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38428101
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS,

я думаю выкладка сюда my.cnf с рекомендациями от тюнера снимет многие вопросы.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38428346
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerSСпасибо за советы!!

Попробую все таблицы перевести в InnoDB.

вообще-то такого совета в теме не было.


авторА вообще, понимаю, что мне нужен спец именно по MySQL, который бы все посмотрел и дал конкретные советы...
а если выяснится, что "да тут надо все переписывать ! " вы согласны за такую консультацию заплатить?
Залетный чуваку даже разбираться в вашем бизнесе не станет. Это же пару месяцев нужно жить внутри него.



авторСкрипты и запросы у меня и так вроде проще некуда.
это не значит, что их нельзя изменить.


авторСейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе.
50% - или внесет или не внесет.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429097
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind,

Так стоит или нет переводить все таблицы к одному типу движка?? Я так понял, что разные типы таблиц в одной базе зло...

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


50% - или внесет или не внесет.


Попробую сформулировать по другому. Что лучше: вся база на одном сервере, или разнести таблицы по разным серверам.
Веди если всю базу положить на один сервер, через некоторое время она не уткнется в предел мощностей железа?
Сейчас база 2,6Гб, через год, скажем будет 5гб? и 32Гб оперативы станет не хватать..

В идеале хочется масштабируемое решение. Выросла таблица - взял сервер, перенес на нее базу и все летает ))
Вот только что делать, если какая-то одна таблица вырастет до огромных размеров (например 10Гб, 40млн. записей)?

my.cnf
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
#  http://dev.mysql.com/doc/mysql/en/server-system-variables.html 

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# 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
#bind_address = 127.0.0.1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer		= 1024M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover          = BACKUP
max_connections         = 500
table_cache             = 51200
#thread_concurrency     = 10

sort_buffer_size        = 1M
read_buffer_size        = 256K
read_rnd_buffer_size    = 1M

# * Query Cache Configuration
#
query_cache_limit	= 16M
query_cache_size        = 2048M

wait_timeout            = 10
connect_timeout         = 30
interactive_timeout     = 30

tmp_table_size          = 128M
max_heap_table_size     = 128M
join_buffer_size        = 16M

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
log_slow_queries	= /var/log/mysql/mysql-slow.log
long_query_time = 5
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id		= 1
#log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size         = 100M
#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/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 128M
innodb_file_io_threads = 8
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_file_per_table


[mysqldump]
quick
quote-names
max_allowed_packet	= 16M

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

[isamchk]
key_buffer		= 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429181
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
query_cache_size = 2048Mи чего ж тут удивляться, что MySQL фризится надолго?
Сократите query_cache_size до примерно 128-256 Мбайт. Если поможет, то попробуйте понемногу увеличивать, но не сильно, например, до 500 Мбайт. Если эффекта не даст или опять будут фризы, то уменьшите обратно.

авторkey_buffer = 1024M
...
innodb_buffer_pool_size = 1024MА вот эти параметры можно было бы и приподнять.
key_buffer_size - до суммарного размера всех индексов всех таблиц MyISAM.
innodb_buffer_pool_size - до суммарного размера всех таблиц и индексов InnoDB.
Это, кстати, одна из причин почему не рекомендуется смешивать движки - приходится выделять память для обоих.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429205
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Да и ещё неплохо было бы посмотреть на отчет тюнера. Там сразу будет видно в какой пропорции "движки смешаны".

К вашему посту добавил бы ещё:

1. max_allowed_packet = 16M то есть наибольший отдаваемый результат этот, в то время как sort_buffer_size = 1M - наибольший сортируемый результат в 16 раз меньше... нет? А судя по тому что join_buffer_size = query_cache_limit = 16M, то размеры согласовывались с размером пакета... то есть такие объемы выдачи - бывают... но "сортируем на диске имея кучу мозгов", нет?

2. innodb_log_buffer_size = 8M -- не маловато для таких настроек? Да и остальные настройки лога и блокировок... надо бы посмотреть согласно загрузке. Может при "зависаниях" как раз накладки между сортировкой на диск и переполнением буфера лога, такое возможно? В смысле начали модифицировать, запрос требует предварительной сортировки - ушло на диск, кинулись писать лог и ему буфер кончился внезапно, а диск уже подзанялся - ждем-с ...

Вот тут не силен, могу "гадать".

3. Количество открытых таблиц 51200 -- точно столько надо? :)

4. Что попадает в slow_query_log? Как много и как часто?

5. Что просит mysqltuner (или как там его правильно кличут)?
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429219
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_connections = 500Тоже сомнительно, что реально нужно так много. Есть ощущение, что сделали от безысходности, чтобы во время фризов у клиентов были просто тормоза, а не ошибки валились.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429240
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerSnetwind,

Так стоит или нет переводить все таблицы к одному типу движка?? Я так понял, что разные типы таблиц в одной базе зло...

У нет никаких причин осуждать это. Да как и к любое "некрасивое" решение, если оно взвешено и осознанно.

Мне недостаточно данных чтобы тут что-то советовать.
Как минимум, innodb позволяет отделить данные таблиц от остального кеша ОС, а вот данные (не индексы) myisam могут "смыться".
С другой стороны innodb предполагает значительно больше "работы" по перетасовыванию байт ради не особо-то и важных целей для веб-приложений.
авторавтор
Сейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе.


50% - или внесет или не внесет.


Попробую сформулировать по другому. Что лучше: вся база на одном сервере, или разнести таблицы по разным серверам.
Веди если всю базу положить на один сервер, через некоторое время она не уткнется в предел мощностей железа?
Сейчас база 2,6Гб, через год, скажем будет 5гб? и 32Гб оперативы станет не хватать..

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


авторВ идеале хочется масштабируемое решение. Выросла таблица - взял сервер, перенес на нее базу и все летает ))
Вот только что делать, если какая-то одна таблица вырастет до огромных размеров (например 10Гб, 40млн. записей)?

Как и всегда - еще раз собрать данные и подумать.


query_cache_size надо бы снизить.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429276
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы.

Сейчас попробую поиграться с настройками.

авторДа и ещё неплохо было бы посмотреть на отчет тюнера.
Что за тюнер и где этот отчет смотреть?
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429309
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS,

Есть прога на перле, кажется, mysqltuner, погуглите, я давно пользовался уже не помню как правильно зовется. Она анализирует ваши наборы данных, логи и что-то ещё и выдает рекомендации по настройкам в my.cnf... если понемногу её слушаться, то постепенно за пару недель можно получить очень приемлемый результат.

По своему опыту: 1 запуск: потребовала 16гектар памяти на кеш БД размером 3гектара (всё иннодебил), показала ещё ряд "плохих параметров"... поправили явно плохие, кеш удвоили (был 1 гектар)... через пару недель - ещё подрегулировали часть настроек и удвоили кеш... потом поигрались с query_cache_size - он действительно когда мал - "плохо", а когда велик - и того хуже. :)

Как итог оказалось что кеша для иннодебила вполне достаточно 3.5гектара на базу (к тому времени) в 7 гектар... а тюнер как просил 16, так и просил...

Как результат: "до" сервер при нагрузке сначала тормозил, а потом падал на 70 запросах в секунду или около того по нехватке памяти, "после" - сильно тормозил, но отдавал до 127 запросов в сек. при 30% потерях соединений (160 запросов в сек). Не упал в течении часа тестирования, памяти больше 4-5гектар не жрал. При штатной пиковой нагрузке в 40 запросов в сек. и нормальной в 5 запросов в сек - вполне приемлемый запас устойчивости. :)

Сервер Intel 3200 (2x2 Xeon 2.5Ghz, max 8Gb RAM, 240Mb/sec HDD system). Сейчас база около 15 гектар, сервер тот же. Как пашет - уже не в курсях. Но, судя по открытой статистике - вполне нормально.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429554
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел тюнер, поставил.

Вот, что он выдал:
автор >> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>;
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[OK] Logged in using credentials from debian maintenance account.

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.63-0+squeeze1-log
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 2G (Tables: 392)
[--] Data in InnoDB tables: 518M (Tables: 93)
[--] Data in MEMORY tables: 0B (Tables: 1)
[!!] Total fragmented tables: 142

-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 1h 48m 6s (4M q [683.073 qps], 293K conn, TX: 11B, RX: 317M)
[--] Reads / Writes: 92% / 8%
[--] Total buffers: 4.5G global + 33.4M per thread (500 max threads)
[!!] Maximum possible memory usage: 20.9G (133% of installed RAM)
[OK] Slow queries: 0% (117/4M)
[OK] Highest usage of available connections: 15% (76/500)
[OK] Key buffer size / total MyISAM indexes: 2.0G/585.6M
[OK] Key buffer hit rate: 100.0% (533M cached / 233K reads)
[OK] Query cache efficiency: 54.8% (1M cached / 2M selects)
[!!] Query cache prunes per day: 2805935
[OK] Sorts requiring temporary tables: 0% (69 temp sorts / 118K sorts)
[!!] Joins performed without indexes: 323
[OK] Temporary tables created on disk: 10% (5K on disk / 49K total)
[OK] Thread cache hit rate: 97% (6K created / 293K connections)
[OK] Table cache hit rate: 35% (871 open / 2K opened)
[OK] Open file limit used: 1% (1K/62K)
[OK] Table locks acquired immediately: 99% (1M immediate / 1M locks)
[OK] InnoDB data size / buffer pool: 518.7M/2.0G

-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Reduce your overall MySQL memory footprint for system stability
Increasing the query_cache size over 128M may reduce performance
Adjust your join queries to always utilize indexes
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_size (> 256M) [see warning above]
join_buffer_size (> 16.0M, or always use indexes with joins)


Перед этим был изменен my.cfn
автор#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# 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
#bind_address = 127.0.0.1
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#
# * Fine Tuning
#
key_buffer = 2048M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 500
table_cache = 31200
#thread_concurrency = 10

sort_buffer_size = 16M
read_buffer_size = 256K
read_rnd_buffer_size = 1M

# * Query Cache Configuration
#
query_cache_limit = 16M
query_cache_size = 256M

wait_timeout = 10
connect_timeout = 30
interactive_timeout = 30

tmp_table_size = 128M
max_heap_table_size = 128M
join_buffer_size = 16M

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# Here you can see queries with especially long duration
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 5
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
# other settings you may need to change.
#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#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/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

innodb_buffer_pool_size = 2048M
innodb_additional_mem_pool_size = 128M
innodb_file_io_threads = 8
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50
innodb_file_per_table


[mysqldump]
quick
quote-names
max_allowed_packet = 16M

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

[isamchk]
key_buffer = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/


Пока, по первым впечатлениям сервер стал шустрее работать.. но надо подождать несколько дней, чтобы окончательные выводы делать..
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429582
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS[--] Data in MyISAM tables: 2G (Tables: 392)
[--] Data in InnoDB tables: 518M (Tables: 93)Что-то не очень сходится с стартовым постом.
HomerS[OK] Key buffer size / total MyISAM indexes: 2.0G/585.6M
[OK] InnoDB data size / buffer pool: 518.7M/2.0GТогда и исходных размеров буферов хватило бы.
HomerS Increasing the query_cache size over 128M may reduce performance
Adjust your join queries to always utilize indexes
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_size (> 256M) [see warning above]
join_buffer_size (> 16.0M, or always use indexes with joins)
о чем уже и говорилось...
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429615
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

авторЧто-то не очень сходится с стартовым постом.
Действительно... но в phpmyadmin показывает побольше цифры!
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429626
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS,

... и странно не сходится "optimize table делается" с 142-я дефрагментированными таблицами...

Кстати, при 500 коннекциях у вас на них выделяется памяти больше чем есть на сервере! При необходимых менее 100шт. Размер памяти под коннекцию есть смысл уменьшить как и само их число. И существенно.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429628
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

да и количество открываемых файлов не согласуется с количетсвом имеющихся таблиц... нафига столько?!?
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429875
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Кстати, при 500 коннекциях у вас на них выделяется памяти больше чем есть на сервере! При необходимых менее 100шт. Размер памяти под коннекцию есть смысл уменьшить как и само их число. И существенно.
Да это вы уже по мелочам придираться стали.
В общем случае, cколько одновременных скриптов может быть запущено - столько и соединений будет. А завышенное число max_connections просто так на всякий случай. Хуже когда их меньше чем надо - на сайте будет позорная ошибка.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38429942
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwind,

а при перегрузе, они займут всю память и сервак опять опозорится... :)

Я не придираюсь, чего и в какой последовательности делать автору - его дело.

Моя хотел только сказать хде возможна проблема, начяльника... :)
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38430627
HomerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор... и странно не сходится "optimize table делается" с 142-я дефрагментированными таблицами...

Оптимизация делается. Но практически сразу снова появляется дефрагментация на пару кб у определенных таблиц. Не думаю, что это так уж и страшно.. То есть практически всегда есть как минимум штук 70 дефрагментированных таблиц.

А после выполненных советов сайт стал практически летать! Так что всем спасибо! Я сейчас даже боюсь еще что-то менять ))
Настройки все как в последней выкладки my.cnf

Просто сейчас в отпуск уезжаю на две недели и оставлять сервер с экспериментальными настройками не очень хочется.. Вот как приеду, буду пробовать выполнять остальные рекомендации.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38430695
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HomerS,

была необходимость "чистить" таблицы кроном. А поскольку они участвуют в нагруженных селектах, то сделал, сразу после чистки, optimize table как часть ХП. И фсё. Делов-то, но тюнер больше не матерится. :)

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

Для таблиц из которых данные не удалаяются - так лучше не делать. Поэтому, в нагруженных проектах делаю отдельные БД "на чтение" и "на обновление/удаление" данных. Правда я не пользуюсь MyISAM-ом. Только в крайних случаях.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38430928
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109Кстати, у вас там стоит для иннодебила файл на таблицу... это оправдано как раз для таких дефрагментирующихся таблиц. В этом случае скорость фрагментирования - больше зависит от типа ФС, чем от операций по удалению из них. При правильно подобранной ФС - может терпеть очень долго.Не путайте фрагментацию файла в ФС и фрагментацию таблицы в файле. Это отдельные вещи. И MySQLTuner рапортует именно о втором.

Но насчет пользы "файл на таблицу" соглашусь, т.к. это исключает перемешивание фрагментов разных таблиц в одном файле. С учетом того, что современные ФС стараются размещать файлы с минимальным фрагментированием, это дает наиболее компактное размещение таблицы на диске.
...
Рейтинг: 0 / 0
Тормозят таблицы mysql
    #38431987
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, пасибки. Оно так и есть.

Я просто не стал акцентировать внимание на деталях. Нафига ТС-у эти "мелочи", да ещё и в отпуске? :)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят таблицы mysql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]