Я использую debian 8 Jessie и MariaDB. Мой mysqltuner, кажется, указывает, что MariaDB может использовать 142% ОЗУ:
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +Aria +BLACKHOLE +CSV +FEDERATED +InnoDB +MRG_MyISAM
[--] Data in InnoDB tables: 2G (Tables: 79)
[--] Data in MyISAM tables: 96M (Tables: 146)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 52)
[!!] Total fragmented tables: 34
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 1d 16h 44m 38s (73M q [502.853 qps], 196K conn, TX: 572B, RX: 14B)
[--] Reads / Writes: 97% / 3%
[--] Total buffers: 17.3G global + 56.2M per thread (500 max threads)
[!!] Maximum possible memory usage: 44.8G (142% of installed RAM)
[OK] Slow queries: 0% (2K/73M)
[OK] Highest usage of available connections: 28% (141/500)
[OK] Key buffer size / total MyISAM indexes: 1.0G/32.6M
[OK] Key buffer hit rate: 100.0% (132M cached / 53K reads)
[OK] Query cache efficiency: 44.9% (50M cached / 113M selects)
[!!] Query cache prunes per day: 260596
[OK] Sorts requiring temporary tables: 0% (2K temp sorts / 2M sorts)
[OK] Temporary tables created on disk: 21% (6K on disk / 28K total)
[OK] Thread cache hit rate: 99% (141 created / 196K connections)
[OK] Table cache hit rate: 72% (500 open / 692 opened)
[OK] Open file limit used: 17% (429/2K)
[OK] Table locks acquired immediately: 99% (25M immediate / 25M locks)
[OK] InnoDB buffer pool / data size: 16.0G/2.4G
[!!] InnoDB log waits: 30
Мой innodb_buffer_pool_size
находится на 16Go, для 32Go RAM это должно быть нормально, я не знаю, что делать для оптимизации.
Дело в том, что общее использование памяти на сервере всегда ниже 89% (плюс кеширование). MariaDB фактически использует 50,6% оперативной памяти.
Это основные переменные в my.cnf, которые я скорректировал, которые могут повлиять на это:
max_connections = 100
max_heap_table_size = 64M
read_buffer_size = 4M
read_rnd_buffer_size = 32M
sort_buffer_size = 8M
query_cache_size = 256M
query_cache_limit = 4M
query_cache_type = 1
query_cache_strip_comments =1
thread_stack = 192K
transaction_isolation = READ-COMMITTED
tmp_table_size = 64M
nnodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 16G
thread_cache_size = 4M
max_connections = 500
join_buffer_size = 12M
interactive_timeout = 30
wait_timeout = 30
open_files_limit = 800
innodb_file_per_table
key_buffer_size = 1G
table_open_cache = 500
innodb_log_file_size = 256M
Что-то не так в моей конфигурации?
Вы закончили настройку, и база данных sql настроена на возможную перегрузку, также у вас есть дублированное max-соединение. Для сервера 32 ГБ my.cnf должен выглядеть примерно так. измените свои настройки, чтобы они соответствовали приведенным ниже.
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
max_connections = 250
table_cache = 4K
wait_timeout = 1200
query_cache_limit = 1M
query_cache_size = 128M
join_buffer_size = 2M
expire_logs_days = 10
max_binlog_size = 100M
innodb_buffer_pool_size = 26G
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
Надеюсь это поможет
Дополнительное сокращение объема памяти может быть достигнуто УДАЛЕНИЕМ из my.cnf следующего, чтобы позволить настройкам по умолчанию обслуживать вашу систему.
sort_buffer_size
read_buffer_size
read_rnd_buffer_size
join_buffer_size
Рассмотрите возможность изменения или добавления следующего в my.cnf
key_buffer_size = 164M # you already have 132m cached per MySqlTuner
thread_cache_size = 100 # CAP suggested in 8.0 to avoid overload
Был создан 141 поток для обслуживания 196 тысяч подключений за 1 день 16 часов безотказной работы. Это снизит высокую загрузку процессора для создания / разрыва соединений.
Удерживать innodb_buffer_pool_size на уровне 16 ГБ на данный момент нормально, поскольку на каждый MySQLTuner приходится всего 2,4 ГБ данных.
Другие элементы, предлагаемые SEO DEVS, просто супер.
Используйте mysqlcalculator.com для быстрой проверки приблизительного использования ОЗУ