оптимизация Mysql

darkover
Posts: 1574
Joined: Sat Apr 13, 2013 8:59 pm

оптимизация Mysql

Post by darkover »

Дратути Админ!

Помогите Mysql подстроить )
Итак как я говорил ранее ( топик лень искать ) чет в скорости не хватает. Вот прошло 69 дней, трафа не много где то 120к уника дейли, хитов больше 600к во всяком случае так мне трекер мой говорит. На сервере установлено 89 ТЦМС, сервер : средненький
Dual Xeon E5-2620 @2.00; 64GB DDR3-1333

А теперь стата по mysqltuner
>> MySQLTuner 1.6.13 - Major Hayden <[email protected]>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering

-- Skipped version check for MySQLTuner script
[OK Currently running supported MySQL version 5.5.44-log
[OK Operating on 64-bit architecture

-------- Storage Engine Statistics -----------------------------------------------------------------
-- Data in InnoDB tables: 7G (Tables: 894)
-- Data in MyISAM tables: 22G (Tables: 5856)
!! Total fragmented tables: 1

-------- Performance Metrics -----------------------------------------------------------------------
-- Up for: 69d 2h 56m 22s (3B q [520.984 qps], 276M conn, TX: 10694G, RX: 778G)
-- Reads / Writes: 61% / 39%
-- Binary logging is disabled
-- Physical Memory : 63.9G
-- Max MySQL memory : 233.0G
-- Other process memory: 1.3G
-- Total buffers: 14.9G global + 372.2M per thread (600 max threads)
-- P_S Max memory usage: 0B
-- Galera GCache Max memory usage: 0B
!! Maximum reached memory usage: 233.3G (364.85% of installed RAM)
!! Maximum possible memory usage: 233.0G (364.28% of installed RAM)
!! Overall possible memory usage with other process exceeded memory
[K Slow queries: 0% (519K/3B)
!! Highest connection usage: 100% (601/600)
OK Aborted connections: 0.01% (19534/276192469)
!! Query cache may be disabled by default due to mutex contention.
OK Sorts requiring temporary tables: 0% (0 temp sorts / 184M sorts)
!! Joins performed without indexes: 1082204
OK Temporary tables created on disk: 16% (20M on disk / 121M total)
!! Table cache hit rate: 0% (5K open / 1M opened)
OK Open file limit used: 0% (9K/999K)
OK Table locks acquired immediately: 99% (3B immediate / 3B locks)

-------- Performance schema ------------------------------------------------------------------------
-- Performance schema is disabled.

-------- ThreadPool Metrics ------------------------------------------------------------------------
-- ThreadPool stat is disabled.

-------- MyISAM Metrics ----------------------------------------------------------------------------
OK Key buffer used: 93.5% (501M used / 536M cache)
OK Key buffer size / total MyISAM indexes: 512.0M/2.2G
OK Read Key buffer hit rate: 99.8% (656B cached / 1B reads)
!! Write Key buffer hit rate: 89.7% (20B cached / 2B writes)

-------- AriaDB Metrics ----------------------------------------------------------------------------
-- AriaDB is disabled.

-------- InnoDB Metrics ----------------------------------------------------------------------------
-- InnoDB is enabled.
OK InnoDB buffer pool / data size: 14.0G/7.8G
OK InnoDB buffer pool instances: 14
OK InnoDB Used buffer: 99.85% (916128 used/ 917504 total)
OK InnoDB Read buffer efficiency: 100.00% (2446174784818 hits/ 2446175345517 total)
OK InnoDB Write log efficiency: 99.94% (5625828083 hits/ 5629420916 total)
OK InnoDB log waits: 0.00% (0 waits / 3592833 writes)

-------- TokuDB Metrics ----------------------------------------------------------------------------
-- TokuDB is disabled.

-------- Galera Metrics ----------------------------------------------------------------------------
-- Galera is disabled.

-------- Replication Metrics -----------------------------------------------------------------------
-- Galera Synchronous replication: NO
-- No replication slave(s) for this server.
-- This is a standalone server.

-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
Reduce your overall MySQL memory footprint for system stability
Dedicate this server to your database for highest performance.
Reduce or eliminate persistent connections to reduce connection usage
Adjust your join queries to always utilize indexes
Increase table_open_cache gradually to avoid file descriptor limits
Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
Beware that open_files_limit (999999) variable
should be greater than table_open_cache ( 6000)
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
max_connections (> 600)
wait_timeout (< 28800)
interactive_timeout (< 28800)
query_cache_type (=0)
join_buffer_size (> 256.0M, or always use indexes with joins)
table_open_cache (> 6000)
Вопрос вот в чем, это нормально, что на таком мелком трафе сервак постоянно сидит в LA 12-15, и залезает уже в своп? Нового ничего не добавляется, не грабится.
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: оптимизация Mysql

Post by admin »

проблема в том что оно вылазит за пределы памяти

!! Maximum reached memory usage: 233.3G (364.85% of installed

от этого свап и вопрос тут может быть не в мускле

Смотрите что занимает память, какие процессы много весят и уже оттуда отталкивайтесь. Смотрите что б кроны все одновременно не запускались и тп
Don't forget to run script update
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: оптимизация Mysql

Post by admin »

Так же имеет смысл смотреть - напримре нагружен диск - копяться процессы в памяти, тогда надо смотреть что его грузит, например раздача статики или мускл запосы и тп

В целом по указанной инфе настроить можно примерно так же как починить машину по телефону ) Тут надо либо самом браться и крутить, спрашивая интернет если не ясно какую гайку крутить или ехать на СТО и платить деньги что б за вас крутил кто-то другой
Don't forget to run script update
darkover
Posts: 1574
Joined: Sat Apr 13, 2013 8:59 pm

Re: оптимизация Mysql

Post by darkover »

В целом мускл + его tmp стоит на ssd
кроме 89 сжтубов ничего на сервере не крутится. Вопросы такие

> !! Joins performed without indexes: 1082204

почему join-ы проходят без индексов? Их либо нет в таблицах, либо по какой-то причине оптимизатор отказывается их использовать. Предлагаю выяснить это. В этом может крыться причина тормозов.

И будет ли тцмс работать с mysql 5.7.x или mariaDB ? Только ответ меня устроит - Да или Нет, возможно - не устроит :)
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: оптимизация Mysql

Post by admin »

Да, будет работать и там и там

джоины зависят от того какие формируются запросы
Если кратко то смысл такой: чем больше индексов - тем медленее апдейт базы (например апдейт цтр после клика) тк надо переписать больше индексов = больше записи на диск и тп
Если нет индекса -тогда медленее выборка но быстрее апдейт
поэтому на все поставить индекс невозможно
вы можете посмотреть какие конкретно у вас запросы тормозят и отталкиваться от этого
Don't forget to run script update
darkover
Posts: 1574
Joined: Sat Apr 13, 2013 8:59 pm

Re: оптимизация Mysql

Post by darkover »

admin wrote:Да, будет работать и там и там

джоины зависят от того какие формируются запросы
Если кратко то смысл такой: чем больше индексов - тем медленее апдейт базы (например апдейт цтр после клика) тк надо переписать больше индексов = больше записи на диск и тп
Если нет индекса -тогда медленее выборка но быстрее апдейт
поэтому на все поставить индекс невозможно
вы можете посмотреть какие конкретно у вас запросы тормозят и отталкиваться от этого
т.е. погодите-ка, апдейт цтр после клика сразу в базу пишется ? это разумно ? почему не юзать кеш ( тот же редис, а апдейт делать раз в 5 минут например )?
Я просто интересуюсь.
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: оптимизация Mysql

Post by admin »

Раз в минуту по крону
Don't forget to run script update
darkover
Posts: 1574
Joined: Sat Apr 13, 2013 8:59 pm

Re: оптимизация Mysql

Post by darkover »

admin wrote:Раз в минуту по крону
Запрос который выполняется 2 секунды - это плохо. Это при том, что :
тегов нет
сфинкс
все в innodb по мануалу

Куда копать-то ?

Image
admin
Site Admin
Posts: 38004
Joined: Wed Sep 10, 2008 11:43 am

Re: оптимизация Mysql

Post by admin »

578 queries per second ?
думаю у вас все же есть там опредленный траф )

смотрите какой конкртено запрос и какой у него план выполнения
так же стоит посмотреть какая нагрузка на дисках
Don't forget to run script update
darkover
Posts: 1574
Joined: Sat Apr 13, 2013 8:59 pm

Re: оптимизация Mysql

Post by darkover »

admin wrote:578 queries per second ?
думаю у вас все же есть там опредленный траф )

смотрите какой конкртено запрос и какой у него план выполнения
так же стоит посмотреть какая нагрузка на дисках
Я же выше писал, 500к хитов по трекеру дейли, по GA смарта 800к
mysql на своем диске, ssd остальное на SAS статика отдельно.
по iostat иногда SAS винты бизи 50%

Еще вопрос, что будет есть cron.php запускать не */1 а скажем */4 ?
А грабинг каждые пять минут
Как это все отразится на статистике.
Кешь в тцмс повысить до 7200 например ?

Меня очень напрягают 12к слоу запросов > 2 секунда, за 10 часов аптайма mysql

ps Лемон, может уже стоит тормознуться в добавлении новых фичь в тцмс, и вылизывать ее ?
Post Reply