powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужен совет по конфигурации MySQL (32Gb RAM)
25 сообщений из 57, страница 2 из 3
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407869
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак, конфиг

[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

...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407871
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind2. это ведь довольно просто должно быть написать движок, который бы считывал из таблиц данные и индексы, оперировал бы ими полностью в оперативке, а на винт записывались бы только изменения. Скорость базы возросла бы на порядок, я так понимаю?
Вы не поверите, но во всех субд при наличии кеширования файлов на диск пишутся только изменения.

Правда что, не поверю :)
Вопрос ведь довольно прост: у меня есть 32Гб, я готов отдать для нужд БД все 30Гб, если ей надо, только пусть она на уровне оперативки все запросы строит и перестраивает и только в случае новых данных фигачит все на винт.
Если mySql относится ко "всем" субд, как мне заставить ее плясать ровно так, как мы придумали? Чего там накрутить надо? Я ведь накручу :)
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407874
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pachimuta, mysql уже так делает. вы ему просто не мешайте.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407878
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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)


Понятно пока однозначно только то, что надо идти и оптимизировать фрагментированные таблицы.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407891
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор[!!] Joins performed without indexes: 348778
авторПонятно пока однозначно только то, что надо идти и оптимизировать фрагментированные таблицы.
да ну ?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407895
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, это важнее :)

Внимание, вопрос ) Как отловить в какой-нибудь лог запросы с такими джойнами?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407904
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38407911
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pachimutanetwind,
Как это понять, мешаю я ему или нет? Какие метрики еще использовать?

это непростой вопрос для веб-сервера где кеш перемешан и бд и файлов и еще бог весь чего.
Если поставите выделенный только для mysql - однозначно ничего кроме mysql эту память не будет использовать.
Однако это все равно не является прямым решением для вашего случая. Запросы могут просто работать излишне медленно.
Не стоит сразу пытаться найти все запросы not using indexes. Уверен, их довольно много. Ищите просто медленные.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408000
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,

Что мы имеем в сухом остатке:
1. рекомендации по анализу и оптимизации запросов
2. рекомендацию перенести БД на отдельный сервер
3. я что-то пропустил?

Вопросы остались такими:
1. Приведенный конфиг для данных ТТХ сервера нормальный, правильный?
2. Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU?
3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно?
4. Существуют ли решения, чтобы разделить чтение/запись на уровне прослойки между базой и движком, чтобы не переписывать код движка? Или до подобных манипуляций мне еще далеко и пока можно об этом не думать?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408036
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Этого хватит на текущие индексы и на те, которые, возможно, придется добавить при оптимизации запросов.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408140
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
спасибо, это уже лучше. Более понятно и конкретно. Я с mysql возюкаюсь с помощью гугла в основном, поэтому прошу прощения за свой нубизм. Но если бы я был неимоверно крут в mysql сюда бы не зашел :)
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408179
lazydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408185
lazydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Proverte blokirovki, vozmogno chto zatik
Iz za blokirovki tablici, myisam blokiruetsya
Na urovne tablici
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408190
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lazydog,
Мысль понял, кажется дельной, как это можно отмониторить в реальном режиме?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408310
lazydog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408361
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pachimutaКоллеги,

Что мы имеем в сухом остатке:
...
2. рекомендацию перенести БД на отдельный сервер

Это не совсем рекомендация. Но если вы это сделаете, то ваше предложение по использованию RAM будет наверняка выполняться. Недостаточно данных чтобы спрогнозировать будет ли заметный эффект в целом или нет.

1. Приведенный конфиг для данных ТТХ сервера нормальный, правильный?

2. Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU?

нужно изменить key_buffer_size в первую очередь.

Чтобы обеспечить побольше памяти для кеша ОС, нужно подобрать такие параметры программы apache или что там у вас крутит сайт, не "смывали" кеш в оперативной памяти. Для некоторых выглядит странной настройка типа MaxClients 50 для сервера о 32 гб памяти, но это вполне нормальная и обоснованная настройка.
Кроме того, в кеше есть еще и другие файлы и с ними еще сложнее становится.

3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно?

Здесь я не понял вообще.

4. Существуют ли решения, чтобы разделить чтение/запись на уровне прослойки между базой и движком, чтобы не переписывать код движка? Или до подобных манипуляций мне еще далеко и пока можно об этом не думать?
Например, в vbulletin код изначально строился таким.
Еще покопайтесь с драйвером mysqlnd. По-моему там что-то было на эту тему.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408448
pachimuta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind3. У меня два сервера, репликация с боевого на запасной идет в качестве реайлтаймового бэкапа. Если я поменяю местами мастер со слейвом и на боевом оставлю только слейв (для дубля), это должно по идее сильно снизить нагрузку на него, верно?

Здесь я не понял вообще.


Ок, подробнее расскажу.
У меня два сервера.
Один боевой. На нем крутится apache, nginx и mysql со всякими кэшами.
Второй резервный. На него идет репликация базы (как бэкап, если вдруг падает основной сервер) + синхронизация файловой системы на случай, если основной выходит из строя.

Т.е. вся нагрузка идет на основной. На второй складываются бэкапы и теоретически он должен быть готов в любой момент перенять эстафету, если просто переключить ДНС.
Можно распределить нагрузку так: на боевом сервере остается рабочий apache + nginx. База (master) переносится на второй сервер, но, поскольку запас мне нужен на случай краха сервера, slave мне придется деражть на первом сервер.
Так понятнее?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408530
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторчто там у вас крутит сайт, не "смывали" кеш в оперативной памяти
вот расскажите как при 30 гигах свободных что то там смоет кэш?
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408535
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Я сделал все от меня зависящее на уровне конфига, чтобы переложить нагрузку на RAM c дисковой подсистемы и CPU?
переходите на innodb. оно может держать в памяти и интексы и данные.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408538
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408539
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408604
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторчто там у вас крутит сайт, не "смывали" кеш в оперативной памяти
вот расскажите как при 30 гигах свободных что то там смоет кэш?
Поскольку не описан объем остальных данных и происходящие процессы, то такое вполне возможно.

авторпереходите на innodb. оно может держать в памяти и интексы и данные.
хабрахабр там ->
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408614
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pachimutanetwindпропущено...

Здесь я не понял вообще.


Ок, подробнее расскажу.
У меня два сервера.
Один боевой. На нем крутится apache, nginx и mysql со всякими кэшами.
Второй резервный. На него идет репликация базы (как бэкап, если вдруг падает основной сервер) + синхронизация файловой системы на случай, если основной выходит из строя.

Т.е. вся нагрузка идет на основной. На второй складываются бэкапы и теоретически он должен быть готов в любой момент перенять эстафету, если просто переключить ДНС.
Можно распределить нагрузку так: на боевом сервере остается рабочий apache + nginx. База (master) переносится на второй сервер, но, поскольку запас мне нужен на случай краха сервера, slave мне придется деражть на первом сервер.
Так понятнее?

Так понятно.
Я пока не поддерживаю вашу идею пытаться все загнать в память, поскольку вы еще не исчерпали остальные методы оптимизации и вообще не занимались оптимизацией запросов.
Но да, описанный пособ обеспечит засасывание всей базы в память и исключит любое влияние остальных процессов на веб-сервере на mysql. В том числе которые вы не сможете распознать. Своего рода страховка. И, очевидно, производительность не ухудшится.
В этом случае нужно прежде всего убедиться, что связь между серверами достаточно быстрая. Как минимум один оба в одном датацентре, как максимум - соединенные медной веревочкой в 1 метр.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38408617
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторхабрахабр там ->
меня на этой неделе там в рид онли перевели. так что непойдет.
...
Рейтинг: 0 / 0
Нужен совет по конфигурации MySQL (32Gb RAM)
    #38409138
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pachimuta,

Что мы имеем в сухом остатке:
1. рекомендации по анализу и оптимизации запросов
2. рекомендацию перенести БД на отдельный сервер
3. я что-то пропустил?

3. Почти всю память под буфера субд.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужен совет по конфигурации MySQL (32Gb RAM)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]