|
|
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Итак, конфиг [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 key_buffer = 16M max_allowed_packet = 16M thread_stack = 192K thread_cache_size = 32 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 64M query_cache_size = 254M # # * 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 = 2 #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 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 replicate-do-db = ХХХХХ max_binlog_size = 20000M #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 [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 23:37:32 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
netwind2. это ведь довольно просто должно быть написать движок, который бы считывал из таблиц данные и индексы, оперировал бы ими полностью в оперативке, а на винт записывались бы только изменения. Скорость базы возросла бы на порядок, я так понимаю? Вы не поверите, но во всех субд при наличии кеширования файлов на диск пишутся только изменения. Правда что, не поверю :) Вопрос ведь довольно прост: у меня есть 32Гб, я готов отдать для нужд БД все 30Гб, если ей надо, только пусть она на уровне оперативки все запросы строит и перестраивает и только в случае новых данных фигачит все на винт. Если mySql относится ко "всем" субд, как мне заставить ее плясать ровно так, как мы придумали? Чего там накрутить надо? Я ведь накручу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 23:40:49 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimuta, mysql уже так делает. вы ему просто не мешайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 23:46:59 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
netwind, Как это понять, мешаю я ему или нет? Какие метрики еще использовать? Вот что говорит перл. -------- Storage Engine Statistics ------------------------------------------- [--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster [--] Data in MyISAM tables: 1G (Tables: 81) [--] Data in InnoDB tables: 62M (Tables: 15) [!!] Total fragmented tables: 36 -------- Security Recommendations ------------------------------------------- [OK] All database users have passwords assigned -------- Performance Metrics ------------------------------------------------- [--] Up for: 205d 17h 0m 6s (1B q [72.638 qps], 68M conn, TX: 22567B, RX: 566B) [--] Reads / Writes: 81% / 19% [--] Total buffers: 298.0M global + 2.7M per thread (151 max threads) [OK] Maximum possible memory usage: 703.8M (2% of installed RAM) [OK] Slow queries: 0% (139K/1B) [OK] Highest usage of available connections: 33% (51/151) [OK] Key buffer size / total MyISAM indexes: 16.0M/1.4G [OK] Key buffer hit rate: 99.7% (10740B cached / 31B reads) [OK] Query cache efficiency: 37.1% (352M cached / 949M selects) [!!] Query cache prunes per day: 32949 [OK] Sorts requiring temporary tables: 0% (3K temp sorts / 176M sorts) [!!] Joins performed without indexes: 348778 [OK] Temporary tables created on disk: 22% (12M on disk / 56M total) [OK] Thread cache hit rate: 99% (640K created / 68M connections) [!!] Table cache hit rate: 0% (64 open / 17M opened) [OK] Open file limit used: 10% (108/1K) [OK] Table locks acquired immediately: 99% (1B immediate / 1B locks) [!!] InnoDB data size / buffer pool: 62.3M/8.0M -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance Enable the slow query log to troubleshoot bad queries Increasing the query_cache size over 128M may reduce performance Adjust your join queries to always utilize indexes Increase table_cache gradually to avoid file descriptor limits Variables to adjust: query_cache_size (> 256M) [see warning above] join_buffer_size (> 128.0K, or always use indexes with joins) table_cache (> 64) innodb_buffer_pool_size (>= 62M) Понятно пока однозначно только то, что надо идти и оптимизировать фрагментированные таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2013, 23:57:24 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
автор[!!] Joins performed without indexes: 348778 авторПонятно пока однозначно только то, что надо идти и оптимизировать фрагментированные таблицы. да ну ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 00:16:32 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Согласен, это важнее :) Внимание, вопрос ) Как отловить в какой-нибудь лог запросы с такими джойнами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 00:18:16 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimuta, ..........[--] Up for: 205d 17h 0m 6s (1............ нехило!!!!! лучшеб если есть возможность перезапустить и понабрать статистику за несколько последних дней. так же имеет смысл обнулить slow query log и добавить log-queries-not-using-indexes http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html By default, administrative statements are not logged, nor are queries that do not use indexes for lookups. This behavior can be changed using --log-slow-admin-statements and --log-queries-not-using-indexes, as described later. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 00:29:50 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimutanetwind, Как это понять, мешаю я ему или нет? Какие метрики еще использовать? это непростой вопрос для веб-сервера где кеш перемешан и бд и файлов и еще бог весь чего. Если поставите выделенный только для mysql - однозначно ничего кроме mysql эту память не будет использовать. Однако это все равно не является прямым решением для вашего случая. Запросы могут просто работать излишне медленно. Не стоит сразу пытаться найти все запросы not using indexes. Уверен, их довольно много. Ищите просто медленные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 00:57:08 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Коллеги, Что мы имеем в сухом остатке: 1. рекомендации по анализу и оптимизации запросов 2. рекомендацию перенести БД на отдельный сервер 3. я что-то пропустил? Вопросы остались такими: 1. Приведенный конфиг для данных ТТХ сервера нормальный, правильный? 2. Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU? 3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно? 4. Существуют ли решения, чтобы разделить чтение/запись на уровне прослойки между базой и движком, чтобы не переписывать код движка? Или до подобных манипуляций мне еще далеко и пока можно об этом не думать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 08:50:00 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimuta1. рекомендации по анализу и оптимизации запросовЭто в обязательном порядке. Включая работу со slow query log. pachimuta2. рекомендацию перенести БД на отдельный серверЭто, имхо, перебор при текущем соотношении размера ОЗУ и данных. С этим погодите пока. pachimuta3. я что-то пропустил?Пропустили большую часть рекомендаций mysqltuner.pl, обратив внимание, почему-то, на самый незначительный фактор. pachimuta[OK] Key buffer size / total MyISAM indexes: 16.0M/1.4GНе понятно, почему mysqltuner.pl написал тут ОК, когда тут совсем не ОК. Вместо key_buffer = 16M в конфиге напишите key_buffer_size = 2G. Этого хватит на текущие индексы и на те, которые, возможно, придется добавить при оптимизации запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 09:48:07 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо, это уже лучше. Более понятно и конкретно. Я с mysql возюкаюсь с помощью гугла в основном, поэтому прошу прощения за свой нубизм. Но если бы я был неимоверно крут в mysql сюда бы не зашел :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 11:10:36 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Eto ne smotreli? http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 11:42:26 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Proverte blokirovki, vozmogno chto zatik Iz za blokirovki tablici, myisam blokiruetsya Na urovne tablici ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 11:49:37 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
lazydog, Мысль понял, кажется дельной, как это можно отмониторить в реальном режиме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 11:52:29 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
Posmotrite chto google pishet, k primeru https://www.google.co.uk/search?q=myisam lock monitor&ie=UTF-8&oe=UTF-8&hl=en-gb&client=safari Vozmogno rassmotret kakoy nibud monito Ring. Ya bi sdelal prosto, zapuskat show Processlist k primeru kagdie 5 sec , i Posmotret mnogo li blokirovok. Esli blokirovok Mnogo, rassmotrite variant perrhoda na Innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 13:08:14 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimutaКоллеги, Что мы имеем в сухом остатке: ... 2. рекомендацию перенести БД на отдельный сервер Это не совсем рекомендация. Но если вы это сделаете, то ваше предложение по использованию RAM будет наверняка выполняться. Недостаточно данных чтобы спрогнозировать будет ли заметный эффект в целом или нет. 1. Приведенный конфиг для данных ТТХ сервера нормальный, правильный? 2. Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU? нужно изменить key_buffer_size в первую очередь. Чтобы обеспечить побольше памяти для кеша ОС, нужно подобрать такие параметры программы apache или что там у вас крутит сайт, не "смывали" кеш в оперативной памяти. Для некоторых выглядит странной настройка типа MaxClients 50 для сервера о 32 гб памяти, но это вполне нормальная и обоснованная настройка. Кроме того, в кеше есть еще и другие файлы и с ними еще сложнее становится. 3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно? Здесь я не понял вообще. 4. Существуют ли решения, чтобы разделить чтение/запись на уровне прослойки между базой и движком, чтобы не переписывать код движка? Или до подобных манипуляций мне еще далеко и пока можно об этом не думать? Например, в vbulletin код изначально строился таким. Еще покопайтесь с драйвером mysqlnd. По-моему там что-то было на эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 13:26:20 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
netwind3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно? Здесь я не понял вообще. Ок, подробнее расскажу. У меня два сервера. Один боевой. На нем крутится apache, nginx и mysql со всякими кэшами. Второй резервный. На него идет репликация базы (как бэкап, если вдруг падает основной сервер) + синхронизация файловой системы на случай, если основной выходит из строя. Т.е. вся нагрузка идет на основной. На второй складываются бэкапы и теоретически он должен быть готов в любой момент перенять эстафету, если просто переключить ДНС. Можно распределить нагрузку так: на боевом сервере остается рабочий apache + nginx. База (master) переносится на второй сервер, но, поскольку запас мне нужен на случай краха сервера, slave мне придется деражть на первом сервер. Так понятнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:06:36 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
авторчто там у вас крутит сайт, не "смывали" кеш в оперативной памяти вот расскажите как при 30 гигах свободных что то там смоет кэш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:51:29 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
автор Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU? переходите на innodb. оно может держать в памяти и интексы и данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:52:58 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html авторBy default, administrative statements are not logged, nor are queries that do not use indexes for lookups. This behavior can be c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:54:29 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
By default, administrative statements are not logged, nor are queries that do not use indexes for lookups. This behavior can be changed using --log-slow-admin-statements and log_queries_not_using_indexes, as described later. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 14:54:52 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторчто там у вас крутит сайт, не "смывали" кеш в оперативной памяти вот расскажите как при 30 гигах свободных что то там смоет кэш? Поскольку не описан объем остальных данных и происходящие процессы, то такое вполне возможно. авторпереходите на innodb. оно может держать в памяти и интексы и данные. хабрахабр там -> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 15:44:01 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimutanetwindпропущено... Здесь я не понял вообще. Ок, подробнее расскажу. У меня два сервера. Один боевой. На нем крутится apache, nginx и mysql со всякими кэшами. Второй резервный. На него идет репликация базы (как бэкап, если вдруг падает основной сервер) + синхронизация файловой системы на случай, если основной выходит из строя. Т.е. вся нагрузка идет на основной. На второй складываются бэкапы и теоретически он должен быть готов в любой момент перенять эстафету, если просто переключить ДНС. Можно распределить нагрузку так: на боевом сервере остается рабочий apache + nginx. База (master) переносится на второй сервер, но, поскольку запас мне нужен на случай краха сервера, slave мне придется деражть на первом сервер. Так понятнее? Так понятно. Я пока не поддерживаю вашу идею пытаться все загнать в память, поскольку вы еще не исчерпали остальные методы оптимизации и вообще не занимались оптимизацией запросов. Но да, описанный пособ обеспечит засасывание всей базы в память и исключит любое влияние остальных процессов на веб-сервере на mysql. В том числе которые вы не сможете распознать. Своего рода страховка. И, очевидно, производительность не ухудшится. В этом случае нужно прежде всего убедиться, что связь между серверами достаточно быстрая. Как минимум один оба в одном датацентре, как максимум - соединенные медной веревочкой в 1 метр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 15:50:56 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
авторхабрахабр там -> меня на этой неделе там в рид онли перевели. так что непойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2013, 15:51:21 |
|
||
|
Нужен совет по конфигурации MySQL (32Gb RAM)
|
|||
|---|---|---|---|
|
#18+
pachimuta, Что мы имеем в сухом остатке: 1. рекомендации по анализу и оптимизации запросов 2. рекомендацию перенести БД на отдельный сервер 3. я что-то пропустил? 3. Почти всю память под буфера субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2013, 00:59:08 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38407869&tid=1835456]: |
0ms |
get settings: |
4ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 357ms |

| 0 / 0 |
