Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 05.05.2016, 00:13   #1
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 22,589
Репутация: 1970265
Отправить сообщение для LEOnidUKG с помощью ICQ

По умолчанию mysql+innodb+innodb_buffer_pool_size

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

Есть у меня 17 ГБ данных в innodb
Есть innodb_buffer_pool_size = 27G
Есть просмотров страниц 500 000

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

SWAP 0 при этом.

tmpdir="/dev/shm"
LEOnidUKG на форуме   Ответить с цитированием

Реклама
Старый 05.05.2016, 01:14   #2
[umka]
Guru-Editor
 
Аватар для [umka]
 
Регистрация: 25.05.2008
Сообщений: 6,183
Репутация: 799008

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

Вероятно, сохраняет данные на диск.
[umka] вне форума   Ответить с цитированием
Старый 05.05.2016, 06:52   #3
VGrey
Аспирант
 
Регистрация: 05.08.2007
Сообщений: 199
Репутация: 17498
Отправить сообщение для VGrey с помощью ICQ

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

innodb_flush_log_at_trx_commit ?
__________________
С уважением, Victor
VGrey вне форума   Ответить с цитированием
Старый 05.05.2016, 07:05   #4
seocore
Хитрый жук
 
Аватар для seocore
 
Регистрация: 25.09.2006
Сообщений: 971
Репутация: 141780

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

Цитата:
Сообщение от LEOnidUKG Посмотреть сообщение
Вопрос... какого хрена mysql дёргает мой SSD АЖ на 37%-45% если памяти выше крыши выделено?
Сюда бы распечатку данных утилиты mysqltuner, была бы хоть какая-то инфа для анализа, можно было бы делать какие-то выводы.
__________________
Инструменты для веб-мастера: кластеризатор СЯ, все запросы конкурента, дешевые XML-лимиты
seocore вне форума   Ответить с цитированием
Старый 05.05.2016, 08:51   #5
pupseg
Академик
 
Аватар для pupseg
 
Регистрация: 14.05.2010
Сообщений: 3,680
Репутация: 515397
Отправить сообщение для pupseg с помощью ICQ Отправить сообщение для pupseg с помощью Skype™

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

cat /etc/my.cnf |grep -v '#' |grep -v '^$'
trx_commit - тут чего?
show full processlist в момент активного использования диска ?
slow queries ?
__________________
Качественная помощь в обслуживании серверов.
Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы и полезные сайты.
pupseg вне форума   Ответить с цитированием
Старый 05.05.2016, 09:45   #6
netwind
Академик
 
Регистрация: 06.05.2007
Сообщений: 6,010
Репутация: 490997

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

Цитата:
Сообщение от LEOnidUKG Посмотреть сообщение
mysql дёргает мой SSD АЖ на 37%-45% если памяти выше крыши выделено?
Так mysql может не только читать, но и писать. Кеш в этом случае не помогает.
Для начала на smart на SSD посмотрите. Если диск побит жизнью, то они начинают сначала на запись подтормаживать.
netwind вне форума   Ответить с цитированием
Старый 05.05.2016, 10:11   #7
LEOnidUKG
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 22,589
Репутация: 1970265
Отправить сообщение для LEOnidUKG с помощью ICQ

ТопикСтартер Re: mysql+innodb+innodb_buffer_pool_size

Цитата:
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 пока только разогревается, посмотрим. Но не думаю, что что-то капитально изменится.

Последний раз редактировалось LEOnidUKG; 05.05.2016 в 10:36..
LEOnidUKG на форуме   Ответить с цитированием
Старый 05.05.2016, 11:01   #8
Dimitrius_R
Drupaler
 
Регистрация: 22.08.2013
Адрес: Rostov-on-Don
Сообщений: 156
Репутация: 15405
Отправить сообщение для Dimitrius_R с помощью ICQ

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

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, пишем модули, верстаем.
Создание сайтов от 800руб. + Партнёрская программа от 25%
Dimitrius_R вне форума   Ответить с цитированием
Старый 05.05.2016, 11:04   #9
LEOnidUKG
『 Работаем 』
 
Аватар для LEOnidUKG
 
Регистрация: 25.11.2006
Адрес: Интернет
Сообщений: 22,589
Репутация: 1970265
Отправить сообщение для LEOnidUKG с помощью ICQ

ТопикСтартер Re: mysql+innodb+innodb_buffer_pool_size

Цитата:
Очень много временных таблиц на диске, если память позволяет, я бы их вынес на ram диск так:
tmpdir = /dev/shm
Третья строчка у меня.

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

Dimitrius_R, спасибо конечно, я загрузил эти данные. Жду когда прогреется mysql
LEOnidUKG на форуме   Ответить с цитированием
Старый 05.05.2016, 17:19   #10
netwind
Академик
 
Регистрация: 06.05.2007
Сообщений: 6,010
Репутация: 490997

По умолчанию Re: mysql+innodb+innodb_buffer_pool_size

Цитата:
Сообщение от LEOnidUKG Посмотреть сообщение
Диск при этом все 8-м ядер просто загружены под 90% через htop
Если ядра нагружены, тогда почему вы начали с диска ? Откуда данные, что он загружен ?
Посмотрите шапку atop - там отдельно загрузка дисков и ядер показывается. Мне htop кажется не очень показательным. Его единственный плюс в том, что он память показывает на манер windows - много свободной.
netwind вне форума   Ответить с цитированием
Ответ



Опции темы

Быстрый переход


Регистрация Справка Календарь Поддержка Все разделы прочитаны