mysql+innodb+innodb_buffer_pool_size

123 4
LEOnidUKG
На сайте с 25.11.2006
Offline
1545
7648

Я что-то не понимаю или что не учитываю.

Есть у меня 17 ГБ данных в innodb

Есть innodb_buffer_pool_size = 27G

Есть просмотров страниц 500 000

Вопрос... какого хрена mysql дёргает мой SSD АЖ на 37%-45% если памяти выше крыши выделено?

SWAP 0 при этом.

tmpdir="/dev/shm"

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
[umka]
На сайте с 25.05.2008
Offline
456
#1

Вероятно, сохраняет данные на диск.

Лог в помощь!
V
На сайте с 05.08.2007
Offline
87
#2

innodb_flush_log_at_trx_commit ?

С уважением, Victor (http://adm-lib.ru)
seocore
На сайте с 25.09.2006
Offline
143
#3
LEOnidUKG:
Вопрос... какого хрена mysql дёргает мой SSD АЖ на 37%-45% если памяти выше крыши выделено?

Сюда бы распечатку данных утилиты mysqltuner, была бы хоть какая-то инфа для анализа, можно было бы делать какие-то выводы.

Инструменты для веб-мастера: кластеризатор СЯ (https://goo.gl/MQWfqO), все запросы конкурента (https://goo.gl/hd5uHS), дешевые XML-лимиты (https://goo.gl/aDZbPI)
pupseg
На сайте с 14.05.2010
Offline
329
#4

cat /etc/my.cnf |grep -v '#' |grep -v '^$'

trx_commit - тут чего?

show full processlist в момент активного использования диска ?

slow queries ?

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
N
На сайте с 06.05.2007
Offline
419
#5
LEOnidUKG:
mysql дёргает мой SSD АЖ на 37%-45% если памяти выше крыши выделено?

Так mysql может не только читать, но и писать. Кеш в этом случае не помогает.

Для начала на smart на SSD посмотрите. Если диск побит жизнью, то они начинают сначала на запись подтормаживать.

Кнопка вызова админа ()
LEOnidUKG
На сайте с 25.11.2006
Offline
1545
#6
innodb_flush_log_at_trx_commit=0
Вероятно, сохраняет данные на диск.

Таких операций практически нет. Они единичны, в основном SELECT.

Диск при этом все 8-м ядер просто загружены под 90% через htop

show full processlist

Сам список практически всегда пуст.

Все операции занимают доли секунды, никаких зависаний нет. Т.е. сайты летают, диск пыхтит, а CPU отрабатывает все ядра. Но ребята, зачем я тогда выделяют 27 ГБ памяти?!

Весь my.cnf


[mysqld]
datadir="/mysql/mysql"
slave_load_tmpdir="/dev/shm"
tmpdir="/dev/shm"

wait_timeout=1800
interactive_timeout=1800
symbolic-links=0
local-infile=1
innodb_file_per_table=1
skip-external-locking
query_cache_limit=8M
query_cache_size=256M
max_user_connections=80
max_connections=500
thread_cache_size=256
key_buffer_size=384M
join_buffer=2M
max_connect_errors=100000
max_allowed_packet=268435456
table_open_cache=1500
sort_buffer_size=4M
read_buffer_size=2M
read_rnd_buffer_size=8M
innodb_thread_concurrency=32
myisam_sort_buffer_size=64M
net_buffer_length=8K
collation-server=utf8_unicode_ci
character_set_server=utf8
query_cache_type=1
tmp_table_size=256M
max_heap_table_size=256M
optimizer_search_depth=0
innodb_log_buffer_size=35M
eq_range_index_dive_limit=200
open_files_limit=17528

innodb_flush_log_at_trx_commit=0
innodb_log_file_size=128M
innodb_buffer_pool_size=27G
innodb_flush_method=O_DIRECT
innodb_buffer_pool_instances=27
default-storage-engine=InnoDB


skip-name-resolve
[mysqldump]
quick
max_allowed_packet=16M

[mysql]
no-auto-rehash
local-infile=1

[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M

[myisamchk]
key_buffer=256M
sort_buffer=256M
read_buffer=4M
write_buffer=4M

[mysqlhotcopy]
interactive-timeout



---------- Добавлено 05.05.2016 в 10:15 ----------

Тюнер вообще предлагает вырубить кэш.


Use of implicit split to @_ is deprecated at mysqltuner.pl line 3243 (#1)
(D deprecated, W syntax) It makes a lot of work for the compiler when you
clobber a subroutine's argument list, so it's better if you assign the results
of a split() explicitly to an array (or list).

>> MySQLTuner 1.6.11 - Major Hayden <major@mhtx.net>
>> 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.6.30
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Data in MyISAM tables: 645M (Tables: 267)
[--] Data in InnoDB tables: 32G (Tables: 120)
[--] Data in MEMORY tables: 0B (Tables: 2)
[!!] Total fragmented tables: 45

-------- Security Recommendations ------------------------------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] There is no basic password file list!

-------- CVE Security Recommendations --------------------------------------------------------------
[--] Skipped due to --cvefile option undefined

-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 10h 30m 47s (5M q [141.620 qps], 515K conn, TX: 198G, RX: 396M)
[--] Reads / Writes: 87% / 13%
[--] Binary logging is disabled
[--] Physical Memory : 31.3G
[--] Max MySQL memory : 36.3G
[--] Other process memory: 662.5M
[--] Total buffers: 27.9G global + 16.2M per thread (500 max threads)
[--] P_S Max memory usage: 466M
[--] Galera GCache Max memory usage: 0B
[!!] Maximum reached memory usage: 29.4G (93.81% of installed RAM)
[!!] Maximum possible memory usage: 36.3G (115.83% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
[OK] Slow queries: 0% (15/5M)
[OK] Highest usage of available connections: 13% (65/500)
[OK] Aborted connections: 0.00% (2/515144)
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Sorts requiring temporary tables: 0% (16 temp sorts / 31K sorts)
[!!] Joins performed without indexes: 134
[!!] Temporary tables created on disk: 52% (2K on disk / 4K total)
[OK] Table cache hit rate: 90% (854 open / 948 opened)
[OK] Open file limit used: 4% (781/17K)
[OK] Table locks acquired immediately: 99% (1M immediate / 1M locks)

-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is disabled.

-------- Performance schema ------------------------------------------------------------------------
[--] Performance schema is enabled.
[--] Memory used by P_S: 466.6M
[--] Sys schema isn't installed.

-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 19.7% (79M used / 402M cache)
[OK] Key buffer size / total MyISAM indexes: 384.0M/9.0M
[OK] Read Key buffer hit rate: 99.9% (2M cached / 3K reads)
[!!] Write Key buffer hit rate: 4.2% (148K cached / 142K writes)

-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.

-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[!!] InnoDB buffer pool / data size: 27.0G/32.6G
[OK] InnoDB buffer pool instances: 27
[!!] InnoDB Used buffer: 64.31% (1138024 used/ 1769458 total)
[OK] InnoDB Read buffer efficiency: 99.39% (178550814 hits/ 179650221 total)
[!!] InnoDB Write Log efficiency: 88.33% (272078 hits/ 308034 total)
[OK] InnoDB log waits: 0.00% (0 waits / 35956 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:
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
Dedicated this server to your database for highest performance.
Adjust your join queries to always utilize indexes
Temporary table size is already large - reduce result set size
Reduce your SELECT DISTINCT queries without LIMIT clauses
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_type (=0)
join_buffer_size (> 2.0M, or always use indexes with joins)
innodb_buffer_pool_size (>= 32G) if possible.


---------- Добавлено 05.05.2016 в 10:32 ----------

Сделал:

query_cache_type=0

Пока каких-то достижений не заметил. Всё тоже самое. Но mysql пока только разогревается, посмотрим. Но не думаю, что что-то капитально изменится.

DR
На сайте с 22.08.2013
Offline
61
#7

query_cache и не нужен для innodb - он ещё одно действие добавляет, т.е. даже притормаживает, если всключён, правильно его отключить нужно 2-мя параметрами:

query_cache_size = 0

query_cache_type = 0

Еще размер файла для логов маленький, я бы поставил от 512 до 1024M

innodb_log_file_size = 1024M

Ещё если диски SSD, я бы добавил:

innodb_support_xa = 0

innodb_doublewrite = 0

innodb_flush_neighbors = 0

Таймауты тоже имхо большие слишком, норм для хостинга:

wait_timeout = 300

interactive_timeout = 300

connect_timeout = 25

Очень много временных таблиц на диске, если память позволяет, я бы их вынес на ram диск так:

tmpdir = /dev/shm

Ещё переменная table_open_cache есть, а table_definition_cache по умолчанию стоит, это не правильно, попробуй так:

table_definition_cache = 2048

table_open_cache = 2048

Можно отключить еще и посмотреть что будет:

performance_schema = off

Оказываем почасовую поддержку сайтам, сделанным на CMS Drupal (http://www.dru.io), пишем модули, верстаем. Создание сайтов от 800руб. (http://www.ra-don.ru) + Партнёрская программа от 25% (http://www.ra-don.ru/partners)
LEOnidUKG
На сайте с 25.11.2006
Offline
1545
#8
Очень много временных таблиц на диске, если память позволяет, я бы их вынес на ram диск так:
tmpdir = /dev/shm

Третья строчка у меня.

---------- Добавлено 05.05.2016 в 11:49 ----------

Dimitrius_R, спасибо конечно, я загрузил эти данные. Жду когда прогреется mysql

N
На сайте с 06.05.2007
Offline
419
#9
LEOnidUKG:
Диск при этом все 8-м ядер просто загружены под 90% через htop

Если ядра нагружены, тогда почему вы начали с диска ? Откуда данные, что он загружен ?

Посмотрите шапку atop - там отдельно загрузка дисков и ядер показывается. Мне htop кажется не очень показательным. Его единственный плюс в том, что он память показывает на манер windows - много свободной.

A
На сайте с 23.02.2008
Offline
84
#10

innodb при этом еще и пишет лог транзакций (файлы ib_logfile ). Но вообще, загрузить SSD на 50% это сильно.

www.diphost.ru (https://www.diphost.ru) - надежный профессиональный хостинг. Администрирование серверов.
123 4

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