|
|
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Здравствуйте коллеги, Пишу сюда за помощью. Итак, имеем выделенный сервер 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 МБ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 09:37:53 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerSИмеются таблицы MyISAM и InnoDBЗачем такая смесь? Почему не все InnoDB? HomerSИмеются несколько относительно мелких таблицКонкретно эти таблицы на каком движке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 09:57:08 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerS, Настройки Мускуля ограничивают его память, и в первую очередь на объем кешей и гораздо важнее объема памяти самого сервера. Если вся база 2.6 гектара, то почему её всю не запихнуть в память, выделив мускулю скажем гектар 8-10 с учетом объема индексов? В этом случае, ситуация - повторяется? Смешанные движки - зло и если такое делается, то надо бы хорошо представлять зачем. Сложно перевести всё в InnoDb? Пгобовали? Фрагментация БД и файлов ОС. Проверяли? Если часто идут операции INSERT, DELETE (особенно последняя), то неплохо периодически делать optimize table. Но, в целом, требуется игораздо больше подробностей, чтобы сказать что-то внятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 10:16:15 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
авторИмеются несколько относительно мелких таблиц (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 и веба это почти всегда лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 11:03:32 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы!! Попробую все таблицы перевести в InnoDB. Изначально все было в MyISAM, но потом, часть таблиц, наиболее активно использующихся и тяжелых перевел в InnoDB. Я не сильный спец в MySQL, и точно не помню, почему пришлось так сделать, видимо что-то где-то прочитал (( optimize table делается, с этим все ок. Тормозят как InnoDB, так и MyISAM таблицы. Одинаково.. авторА что конкретно ваши "спецы из фриланса" сделали для стабилизации кеша ? Точно не знаю.. так как не очень разбираюсь во всем этом. Но после таких настроек, как правило все становилось намного лучше, пока база снова не вырастала (( авторКак я понимаю, они это то, что продают под названием EX-4. Возможно, стоило взять EX-40 за те же деньги, но с процессором похуже, зато 32 гб RAM. Для mysql и веба это почти всегда лучше. Да, EX-4. Когда его брал, база была в два или даже в три раза меньше и все летало. Сейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе.. авторС точки зрения администратора лучше чем эти меры, как правило, не сделать ничего.А с точки зрения программиста еще можно попытаться анализировать запросы подробнее. Но это ведь не ваш метод, да? Скрипты и запросы у меня и так вроде проще некуда.. И при обычной работе проблем нет. Проблемы возникают, как я писал выше, когда таблицу долго не изменяют. А вообще, понимаю, что мне нужен спец именно по MySQL, который бы все посмотрел и дал конкретные советы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 12:40:42 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerS, я думаю выкладка сюда my.cnf с рекомендациями от тюнера снимет многие вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 13:37:08 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerSСпасибо за советы!! Попробую все таблицы перевести в InnoDB. вообще-то такого совета в теме не было. авторА вообще, понимаю, что мне нужен спец именно по MySQL, который бы все посмотрел и дал конкретные советы... а если выяснится, что "да тут надо все переписывать ! " вы согласны за такую консультацию заплатить? Залетный чуваку даже разбираться в вашем бизнесе не станет. Это же пару месяцев нужно жить внутри него. авторСкрипты и запросы у меня и так вроде проще некуда. это не значит, что их нельзя изменить. авторСейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе. 50% - или внесет или не внесет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:19:14 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 07:45:10 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
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. Это, кстати, одна из причин почему не рекомендуется смешивать движки - приходится выделять память для обоих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 10:03:58 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
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 (или как там его правильно кличут)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 10:21:48 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
max_connections = 500Тоже сомнительно, что реально нужно так много. Есть ощущение, что сделали от безысходности, чтобы во время фризов у клиентов были просто тормоза, а не ошибки валились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 10:29:59 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerSnetwind, Так стоит или нет переводить все таблицы к одному типу движка?? Я так понял, что разные типы таблиц в одной базе зло... У нет никаких причин осуждать это. Да как и к любое "некрасивое" решение, если оно взвешено и осознанно. Мне недостаточно данных чтобы тут что-то советовать. Как минимум, innodb позволяет отделить данные таблиц от остального кеша ОС, а вот данные (не индексы) myisam могут "смыться". С другой стороны innodb предполагает значительно больше "работы" по перетасовыванию байт ради не особо-то и важных целей для веб-приложений. авторавтор Сейчас мне нужен совет, что лучше для MySQL, и как я понимаю - лучше взять побольше оперативки.. Вынести на один сервак базу и скрипты, а на другом все оставить. Или скрипты тоже убрать с MySQL сервера? Где-то читал, что это внесет дополнительную задержку - скрипту придется обращаться на другой сервер к базе. 50% - или внесет или не внесет. Попробую сформулировать по другому. Что лучше: вся база на одном сервере, или разнести таблицы по разным серверам. Веди если всю базу положить на один сервер, через некоторое время она не уткнется в предел мощностей железа? Сейчас база 2,6Гб, через год, скажем будет 5гб? и 32Гб оперативы станет не хватать.. Если все же пытаться обобщать, то скорее будет лучше на отдельном сервере, чем хуже из-за раздельности кеша данных mysql и всего остального. Но иногда приложения с большим числом мелких запросов проигрывают в такой конфигурации. авторВ идеале хочется масштабируемое решение. Выросла таблица - взял сервер, перенес на нее базу и все летает )) Вот только что делать, если какая-то одна таблица вырастет до огромных размеров (например 10Гб, 40млн. записей)? Как и всегда - еще раз собрать данные и подумать. query_cache_size надо бы снизить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 10:43:08 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы. Сейчас попробую поиграться с настройками. авторДа и ещё неплохо было бы посмотреть на отчет тюнера. Что за тюнер и где этот отчет смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 11:00:02 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
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 гектар, сервер тот же. Как пашет - уже не в курсях. Но, судя по открытой статистике - вполне нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 11:19:26 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Нашел тюнер, поставил. Вот, что он выдал: автор >> 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/ Пока, по первым впечатлениям сервер стал шустрее работать.. но надо подождать несколько дней, чтобы окончательные выводы делать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 13:07:48 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
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) о чем уже и говорилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 13:21:39 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
miksoft, авторЧто-то не очень сходится с стартовым постом. Действительно... но в phpmyadmin показывает побольше цифры! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 13:35:35 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerS, ... и странно не сходится "optimize table делается" с 142-я дефрагментированными таблицами... Кстати, при 500 коннекциях у вас на них выделяется памяти больше чем есть на сервере! При необходимых менее 100шт. Размер памяти под коннекцию есть смысл уменьшить как и само их число. И существенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 13:38:57 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Arhat109, да и количество открываемых файлов не согласуется с количетсвом имеющихся таблиц... нафига столько?!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 13:39:41 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Arhat109Кстати, при 500 коннекциях у вас на них выделяется памяти больше чем есть на сервере! При необходимых менее 100шт. Размер памяти под коннекцию есть смысл уменьшить как и само их число. И существенно. Да это вы уже по мелочам придираться стали. В общем случае, cколько одновременных скриптов может быть запущено - столько и соединений будет. А завышенное число max_connections просто так на всякий случай. Хуже когда их меньше чем надо - на сайте будет позорная ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 15:51:07 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
netwind, а при перегрузе, они займут всю память и сервак опять опозорится... :) Я не придираюсь, чего и в какой последовательности делать автору - его дело. Моя хотел только сказать хде возможна проблема, начяльника... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 16:23:51 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
автор... и странно не сходится "optimize table делается" с 142-я дефрагментированными таблицами... Оптимизация делается. Но практически сразу снова появляется дефрагментация на пару кб у определенных таблиц. Не думаю, что это так уж и страшно.. То есть практически всегда есть как минимум штук 70 дефрагментированных таблиц. А после выполненных советов сайт стал практически летать! Так что всем спасибо! Я сейчас даже боюсь еще что-то менять )) Настройки все как в последней выкладки my.cnf Просто сейчас в отпуск уезжаю на две недели и оставлять сервер с экспериментальными настройками не очень хочется.. Вот как приеду, буду пробовать выполнять остальные рекомендации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 08:14:52 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
HomerS, была необходимость "чистить" таблицы кроном. А поскольку они участвуют в нагруженных селектах, то сделал, сразу после чистки, optimize table как часть ХП. И фсё. Делов-то, но тюнер больше не матерится. :) Кстати, у вас там стоит для иннодебила файл на таблицу... это оправдано как раз для таких дефрагментирующихся таблиц. В этом случае скорость фрагментирования - больше зависит от типа ФС, чем от операций по удалению из них. При правильно подобранной ФС - может терпеть очень долго. Для таблиц из которых данные не удалаяются - так лучше не делать. Поэтому, в нагруженных проектах делаю отдельные БД "на чтение" и "на обновление/удаление" данных. Правда я не пользуюсь MyISAM-ом. Только в крайних случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 09:26:18 |
|
||
|
Тормозят таблицы mysql
|
|||
|---|---|---|---|
|
#18+
Arhat109Кстати, у вас там стоит для иннодебила файл на таблицу... это оправдано как раз для таких дефрагментирующихся таблиц. В этом случае скорость фрагментирования - больше зависит от типа ФС, чем от операций по удалению из них. При правильно подобранной ФС - может терпеть очень долго.Не путайте фрагментацию файла в ФС и фрагментацию таблицы в файле. Это отдельные вещи. И MySQLTuner рапортует именно о втором. Но насчет пользы "файл на таблицу" соглашусь, т.к. это исключает перемешивание фрагментов разных таблиц в одном файле. С учетом того, что современные ФС стараются размещать файлы с минимальным фрагментированием, это дает наиболее компактное размещение таблицы на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2013, 11:31:36 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=204&tid=1835869]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 359ms |

| 0 / 0 |
