|
|
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Добрый день всем, честно говоря я не профи в настройке mysql но после переноса части сайтов мускул стал грузить процессор под 300-500 процентов что и заставило меня полезть в более глубокую настройку. Временные файлы вынес уже в ОЗУ, таблицы чекал раза четыре и разными способами но количество фрагментированных таблиц остается в пределах 300-500 таблиц, как ни крути. Не знаю почему, но вопрос в другом. Следую плавно советам mysqltuner и подкручиваю значения, паралелльно читая что за что отвечает и где какие должны быть оптимальные значения но уже начинаю волноватся за некоторые параметры которые кажутся "большими" скромно говоря. Можете проверить и подсказать что где не так или на что стоит обратить внимание, буду очень признателен. вот содержимое файла my.cnf Код: sql 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. вот что выдает myslqtuner Код: sql 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. вот что творится в топе Код: sql 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. в целом в данный момент показатели вроде в норме но иногда без видимой причины резко растет la и вырастает до 20, иногда до 50 и mysqltuner выдает совет увеличить query_cache_limit = 18M query_cache_size = 896M которые на мой взгляд уже нереально большие обосновывая это большим количеством Query cache prunes per day Баз на сервере очень много, 32гб памяти, поэтому все так сложно. Подскажите, буду очень признателен за любые советы и мнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2015, 23:52 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
автор[!!] Joins performed without indexes: 1227 [!!] Temporary tables created on disk: 42% (12K on disk / 28K total) запросы кривые зело ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2015, 23:57 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
авторlong_query_time = 2 ..................... [--] Up for: 29m 5s (523K q [300.139 qps] [OK] Slow queries: 1% (10K/523K) Грубо говоря, пять запросов в секунду, каждый работает по две секунды минимум... В создавшейся ситуации минимум десяток процессорных ядер должны обрабатывать эти медленные запросы. Собственно, можно начинать с просмотра лога медленных запросов и их оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 01:08 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Prahaquery_cache_limit = 18M query_cache_size = 896M Владимир, ради опыта, попробуйте сделать так: Код: sql 1. 2. и расскажите нам, как себя будет вести mysql? И не обращайте внимание на "Query cache prunes per day". Вполне возможно, Вы будете приятно удивлены. При настройке mysql нужно исходить из предпоссылки: излишне увеличенные параметры НЕ способствуют увеличению производительности поскользу вносят дополнительные накладные расходы. Насмотря на имеющуюся в системе свободную память. Например: Vladimir_Praha[OK] Key buffer size / total MyISAM indexes: 3.0G/1.5G Зачем Вам 3G Key buffer size, если у Вас всего индексов 1.5G??? Я бы поставил размер Key buffer size в 80% от размера индексов: в буфер должны попасть наиболее часто испульзуемые данные, а не те, которые будут нужны раз в год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 10:33 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
VGreyVladimir_Prahaquery_cache_limit = 18M query_cache_size = 896M Владимир, ради опыта, попробуйте сделать так: Код: sql 1. 2. и расскажите нам, как себя будет вести mysql? И не обращайте внимание на "Query cache prunes per day". Вполне возможно, Вы будете приятно удивлены. При настройке mysql нужно исходить из предпоссылки: излишне увеличенные параметры НЕ способствуют увеличению производительности поскользу вносят дополнительные накладные расходы. Насмотря на имеющуюся в системе свободную память. Например: Vladimir_Praha[OK] Key buffer size / total MyISAM indexes: 3.0G/1.5G Зачем Вам 3G Key buffer size, если у Вас всего индексов 1.5G??? Я бы поставил размер Key buffer size в 80% от размера индексов: в буфер должны попасть наиболее часто испульзуемые данные, а не те, которые будут нужны раз в год. Спасибо огромное за конкретные советы, закомментировал сейчас query_cache_limit и выставил query_cache_size в 32мб, заодно Key buffer size подправил на 2гб, перезапустил и посмотрим что получится. Еще заодно расскоментировал вот эти строчки: interactive_timeout = 28800 wait_timeout = 28800 thread_concurrency = 10 Надеюсь что этим ничего не испорчу, но если что пишите, сразу уберу. Пока сажусь мониторить работу базы. Честно говоря устойчивой работы базы добивался но пугают "Query cache prunes per day" иногда достигающие несколько миллионов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 11:32 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Вот через 16 минут после рестарта с выше указанными параметрами, тюнер выдает такое: Код: sql 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. Сам конфиг выглядит сейчас вот так Код: sql 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. В топе творится вот это Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 11:45 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Причем я заметил что чем больше параметр query_cache_size тем позже появляются сообщения о Query cache prunes per day и тем их меньше. Но судя по наблюдениям он исчезнет если я выставлю несколько гигабайтов, что судя по мнениям которые нагуглил просто абсурд. Может другой какой то параметр на это еще может повлиять чтобы эти prunes не лезли с такой дикой активностью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 11:49 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Praha, Joins performed without indexes: 1227 -- ВОТ ЭТО ГЛАВНОЕ! Включаешь slow query log, включаешь логирование запросов без индексов -- и вперёд, пахать, создавать индексы. Можно пойти и другим путём -- путём понимания -- просмотреть глазами всю схему и для каждой таблицы подумать, как с нею будут JOIN-иться, и создать индексы на условия JOIN-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 12:34 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
VGrey#query_cache_limit = 18M query_cache_size = 32M [/src] query_cache_size надо ставить в НОЛЬ а не в то, что вы там советуете. Эта хрень только мешает и память жрёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 12:36 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Поменял в ноль, теперь картина вроде честнее выглядит Код: sql 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. но меня по прежнему беспокоит нагрузка на процессор дикая со стороны мускула Код: sql 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. можно на это как то повлиять или с этим просто жить придется? Медленные запросы переделывать не вариант, так как сайтов огромное количество и многие из них не мои, поэтому ищу как вывернутся оптимизацией именно этих настроек (спасибо всем за понимание и заранее извиняюсь что игнорирую такие советы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 14:18 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Praha, Много ли запросов на модификацию данных? query_cache_size не стоит делать слишком большим, т.к. его частичная очистка при модификации данных становится слишком дорогой. Устанавливать его в ноль, имхо, имеет смысл только если доля запросов на модификацию данных очень велика. По моим наблюдениям, во многих случаях оптимальное значение находится в районе 64-256 Мбайт. Попробуйте его по варьировать и посмотреть на Query cache efficiency. И нельзя ли все MyISAM-таблицы перевести в InnoDB ? max_heap_table_size и tmp_table_size, как правило, делают одинаковыми. Если запросы, которые создают временные таблицы на диске, не поддаются оптимизации, то эти параметры можно попробовать увеличить. Но лучше таки попытаться оптимизировать запросы. Возможно, нужно досоздать индексов (на это, кстати, указывает тот факт, что MyISAM-индексов всего 1.5G при 11G данных) или переписать запросы. Начните с тех запросов, который попадают в Slow queries log. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 15:57 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Еще вариант, поскольку памяти навалом, использовать Tmpfs для временных файлов MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 15:58 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Praha Код: sql 1. 2. Тоже имеет смысл попробовать. http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_join_buffer_size Increase the value of join_buffer_size to get a faster full join when adding indexes is not possible. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 16:03 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
miksoftЕще вариант, поскольку памяти навалом, использовать Tmpfs для временных файлов MySQL. они итак уже там если не ошибаюсь join_buffer_size если начинаю увеличивать то это становится похоже на бездонную бочку, сперва пишет join_buffer_size > 256.0K если подкручу то join_buffer_size > 512.0K и так далее до бесконечности, я уже побоялся там выставлять большие параметры типа 50мегабайт и так далее, хотя может и ошибаюсь и ничего страшного нет, правда я не понимаю как определить разницу или понять стало лучше или хуже. max_heap_table_size и tmp_table_size сделал одинаковыми, 512 выставил у обоих. Еще раз спасибо большое за конкретные и дельные советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 17:41 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
query_cache_size если делаю небольшим то очень быстро буквально за 10-20 минут появляется огромное количество prunes а при увеличении все улучшается, по наблюдениям при параметре query_cache_size порядка 756мб или даже 1гб перестают появлятся prunes но мне субьективно кажется что сервер через сутки более туповат или просто кажется что параметр слишком завышен, но в общем боюсь пока с ним экспериментировать, поэтому лучше всего как советовали выше выставил 0 и пытаюсь решить другие узкие места. В данное время все вроде нормально, единственно меня беспокоит большая нагрузка на процессор, топ постоянно показывает цифры в районе 300-550%, что несомненно слишком много и как эту нагрузку снять или что улучшить ума не приложу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 18:38 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Prahaединственно меня беспокоит большая нагрузка на процессор, топ постоянно показывает цифры в районе 300-550%, что несомненно слишком много и как эту нагрузку снять или что улучшить ума не приложу.Лог медленных запросов смотрели? Их количество в общем потоке весьма ощутимо. Пока не разберётесь с наиболее часто повторяющимися, отжирающими значительные ресурсы, нагрузка так и будет высокой. Утилитка mysqldumpslow может оказаться весьма полезной. Vladimir_Prahaquery_cache_size если делаю небольшим то очень быстро буквально за 10-20 минут появляется огромное количество prunes а при увеличении все улучшается, по наблюдениям при параметре query_cache_size порядка 756мб или даже 1гб перестают появлятся prunesНе вижу смысла хранить абсолютно все данные в кеше. Особенно те, на получение которых тратится мало ресурсов. Поставьте значение в несколько мегабайт или в несколько десятков мегабайт и сохраните статистику использования кеша за пару дней. Если после двукратного увеличения размера кеша (не трогая другие параметры) ситуация в следующую пару дней заметно не улучилась, то нет смысла пытаться далее увеличивать размер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 19:57 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_PrahamiksoftЕще вариант, поскольку памяти навалом, использовать Tmpfs для временных файлов MySQL.они итак уже там если не ошибаюсьВозможно, я что-то пропустил, но не вижу как это следует из представленных данных. Если оно реально так, то с загрузкой CPU, не трогая запросов и индексов, имхо, уже ничего не сделаешь. Разумеется те или иные параметры влияют на то, сколько временных файлов вывалится на диск. Но если диск находится в оперативке, то изменение этих параметров не даст существенного улучшения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 21:58 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. выше конфиг выкладывал, там указано что tmpdir = /dev/shm или мы о разных вещах говорим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:00 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
авторв буфер должны попасть наиболее часто испульзуемые данные, а не те, которые будут нужны раз в год бред. раз в год так можно положить сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:05 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
авторquery_cache_size надо ставить в НОЛЬ а не в то, что вы там советуете. Эта хрень только мешает и память жрёт. перестаньте давать явно неправильные ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:06 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
автор[OK] Query cache efficiency: 64.7% (284K cached / 439K selects) [OK] Query cache prunes per day: 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:06 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
Vladimir_Prahaвыше конфиг выкладывал, там указано что tmpdir = /dev/shmПохоже, что оно. А занятое место меняется во время работы MySQL? Там появляются временные файлы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 22:13 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
miksoftVladimir_Prahaвыше конфиг выкладывал, там указано что tmpdir = /dev/shmПохоже, что оно. А занятое место меняется во время работы MySQL? Там появляются временные файлы? да файлы появляются, занятое место постоянно меняется, но там совсем немного, от 0 до 400мб что я пока видел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.01.2016, 23:58 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
подправил конфиг, сам обнаружил что table cache почему то дважды в конфиге фигурирует, плюс еще чуток подкрутил, перезапустил, пока все выглядит более чем ободряюще но боюсь утром опять будет куча восклицательных знаков а главное нагрузка на процессор осталась на месте, но тюнер пока что выдает вот это Код: sql 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. смотрю в топ и визуально кажется что база теперь меньше грузит процессор, ибо показания все чаще мелькают в диапазоне 120-300% но это все равно многовато, завтра буду думать дальше как это побороть Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. на данный момент конфиг выглядит вот так, поэтому если у кого будут какие умные мысли буду очень признателен Код: sql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2016, 00:13 |
|
||
|
Оптимизация MySQL по результатам mysqltuner.pl
|
|||
|---|---|---|---|
|
#18+
ну вот, при кеше в 128мб уже через 15 минут полезли prunes Код: sql 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. Сейчас поставлю 256 но уверен что и этого будет мало и будет просить дальше, до примерно отметки в 1гб (1гб долго не гонял, возможно и там будет лезть) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2016, 00:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39141336&tid=1832312]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
146ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 454ms |

| 0 / 0 |
