Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте,форумчане.
Собственно,что имеем на машине:
два проца Intel Xeon QC E5410
32Гб ОЗУ
8 сказишных дисков 15К по 143Гб все в рейде 0
крутится это все на убунту сервер х64 10.10
MySQL 5.1.49
используется под игровой сервер
На сервере используются:
4 базы в MyISAM -их размер по 100Мб и не увеличивается
4 базы в InnoDB - размер 2-х по 4Гб и 2-х по 1Гб и размер всех баз ,что в InnoDB постоянно растет.
Запускаю ОС без апача,без никаких приложений,а только мускул работает,то у меня:
Load Average: 0.30-0.50
без мускула Load Average : 0.01-0.10
при включеном игровом сервере(онлайн около 1000): 1.5-2.0
Тоесть предполагаю,что проблема именно в мускуле.
Вот конфиг,что используется сейчас:
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/serve … ables.html
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[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 = -5
[mysqld]
#
# * Basic Settings
#
#
# * IMPORTANT
# If you make changes to these settings and your system uses apparmor, you may
# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.
#
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer = 128M
max_allowed_packet = 16M
thread_stack = 24M
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover = BACKUP
max_connections = 4096
table_cache = 4096
#thread_concurrency = 10
#
# * Query Cache Configuration
#
query_cache_limit = 512M
query_cache_size = 512M
#
# * 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
#log_error = /var/log/mysql/error.log
# 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
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
#binlog_ignore_db = include_database_name
#
# * InnoDB
#
innodb_file_per_table
innodb_additional_mem_pool_size = 256M
innodb_buffer_pool_size = 3000M
innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_buffer_size = 8M
#innodb_log_file_size = 25M
#innodb_log_files_in_group = 3
innodb_thread_concurrency = 12
innodb_flush_method = O_DSYNC
innodb_table_locks = 0
innodb_flush_log_at_trx_commit = 0
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
#big-tables
# 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 = 160M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 32M
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/
Скажите,что можно подкорректировать в конфиге ?
Отредактированно Antiment (20.11.2010 11:44:11)
Неактивен
А что Вас смущает то? LA 2 на шестнадцати ядрах — это 12.5% загрузки.
Хотите, чтобы был ноль, — не давайте нагрузки на сервер
При Ваших ресурсах можно вообще целиком засунуть базы в память
(innodb_buffer_pool_size = 10G), даст ли это прирост производительности —
какой-то даст, но опять же — всё относительно.
Вот что действительно смущает — это восемь хардов в нулевом рейде.
Время падения такой схемы в 8 раз меньше времени падения одного
жесткого диска. Я бы хотя бы десятку делал.
Неактивен
paulus написал:
А что Вас смущает то? LA 2 на шестнадцати ядрах — это 12.5% загрузки.
Хотите, чтобы был ноль, — не давайте нагрузки на сервер
При Ваших ресурсах можно вообще целиком засунуть базы в память
(innodb_buffer_pool_size = 10G), даст ли это прирост производительности —
какой-то даст, но опять же — всё относительно.
Вот что действительно смущает — это восемь хардов в нулевом рейде.
Время падения такой схемы в 8 раз меньше времени падения одного
жесткого диска. Я бы хотя бы десятку делал.
Я не говорю о загрузке процов,нагрузка ядер нормальная,не выше 15%,я говорю а Лоад Аверейдж всоком.Вот именно он меня смущает,бо при такой нагрузке он должен не превышать 0.5.
Что значит время падение системы меньше ?
Неактивен
Собственно так говорит в рекомендации тюнера,чтоб дать больше памяти,но производительность от этого врятли выростет.как Вы сказали.
Вот собственно даные из тюнера мускула (аптайм мускула примерно 12 часов):
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.49-1ubuntu8.1
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 1G (Tables: 1071)
[--] Data in InnoDB tables: 17G (Tables: 356)
[!!] Total fragmented tables: 117
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 13h 8m 7s (5M q [113.822 qps], 59K conn, TX: 3B, RX: 607M)
[--] Reads / Writes: 24% / 76%
[--] Total buffers: 3.8G global + 26.5M per thread (4096 max threads)
[!!] Maximum possible memory usage: 109.8G (348% of installed RAM)
[OK] Slow queries: 0% (2/5M)
[OK] Highest usage of available connections: 0% (38/4096)
[OK] Key buffer size / total MyISAM indexes: 128.0M/122.9M
[OK] Key buffer hit rate: 99.7% (8M cached / 22K reads)
[OK] Query cache efficiency: 34.4% (519K cached / 1M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (10 temp sorts / 98K sorts)
[OK] Temporary tables created on disk: 0% (48 on disk / 9K total)
[OK] Thread cache hit rate: 99% (48 created / 59K connections)
[OK] Table cache hit rate: 25% (1K open / 5K opened)
[OK] Open file limit used: 10% (2K/20K)
[OK] Table locks acquired immediately: 99% (4M immediate / 4M locks)
[!!] InnoDB data size / buffer pool: 17.0G/2.9G
-------- 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
Enable the slow query log to troubleshoot bad queries
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
innodb_buffer_pool_size (>= 17G)
Неактивен
Время падения... ну, можно, например, в терминах вероятности. Пусть вероятность
аппаратного сбоя жесткого диска в течение следующих суток — 1/500 (считаем, что
жесткий диск в среднем работает 1.5 года). Вероятность аппаратного сбоя восьми
жестких дисков — 8 / 500 = 1/62. То есть при той же загрузке один из жестких дисков
вероятно выпадет через два месяца. Разумеется, числа я взял с потолка, но смысл
правильный.
Что касается подкруток — Ваша подсказывалка тоже предлагает засунуть всё в память
Неактивен
paulus написал:
Время падения... ну, можно, например, в терминах вероятности. Пусть вероятность
аппаратного сбоя жесткого диска в течение следующих суток — 1/500 (считаем, что
жесткий диск в среднем работает 1.5 года). Вероятность аппаратного сбоя восьми
жестких дисков — 8 / 500 = 1/62. То есть при той же загрузке один из жестких дисков
вероятно выпадет через два месяца. Разумеется, числа я взял с потолка, но смысл
правильный.
Что касается подкруток — Ваша подсказывалка тоже предлагает засунуть всё в память
Ваша теория вероятности неправильная )))
Если брать по такой теории крышу дома из черепицы,срок "убивания" которой допустим 20 лет и количество самих черепиц,то по вашей теории каждый месяц 2-3 черпицы должны просто лопать ))
В даном случаи,надо еще учитывать нагрузку на винты,при рейд 0 на каждый винт меньше нагрузки,чем при рейде 10,например,да и скорость естественно выше.
Неактивен
Не, не катит. Крыша сама по себе не ломается. Она ломается под нагрузкой.
Например, запустим на эту крышу град. И пусть он постоянно долбит эту крышу.
Вероятность, что сломается какая-нибудь одна черепичка на большой крыше,
разумеется, гораздо больше, чем вероятность, что сломается черепичка на
маленькой (в пределе — 1 штука) крыше.
Ну и надо понимать, что «меньше нагрузки» — понятие относительное. При чте-
нии с нуля Вы читаете одновременно со всех дисков. То есть долбятся все диски
одновременно.
Неактивен
paulus написал:
Ну и надо понимать, что «меньше нагрузки» — понятие относительное. При чте-
нии с нуля Вы читаете одновременно со всех дисков. То есть долбятся все диски
одновременно.
Но ведь скорость чтения и записи в 0 выше чем в 10,правильно ?
Неактивен
Записи — да; чтения — зависит от реализации, часто — да.
Неактивен
А подскажите,как правильно сделать так:
1.Разбить масив,что в рейде на несколько дисков (на 3 например).
2.Установить ОС на первый (это понятно).
3.Базу и сервер мускула на второй (тут не понятно).
4. Или по пункту 3,но масив разбить например на 6 частей,на 1-м ОС,сервер мускула поставить на 2-й и каждую базу на отдельный диск(возможно ли так ?)
Неактивен
Как-то Вы странно оперируете понятиями. Диск — это железка, на которую
пишутся данные. Диски собраны в массив, и, как я понял, Вы хотите общаться
с этим массивом целиком. Если так — то везде в Вашем вопросе я вместо
«диск» читаю слово «раздел».
1. fdisk /dev/md0
2. Совсем не понятно, обычно дистрибутивы делают несколько рейдов между
разделами на диске, а не наоборот, как у Вас, но, возможно, Вы знаете, как.
3. ПО базы надо ставить туда же, где и система — оно не создает нагрузки
Данные надо просто перенести на другой раздел (mv) и поставить в старое место
символическую ссылку (ln -s). Разумеется, с остановленным MySQL.
4. То же самое, но переносить отдельно каждую базу, и ставить на нее сим-
волическую ссылку.
Я только одного не пойму — какой в этом практический смысл? Всё равно
массив один, всё равно будет нагружаться целиком, и биться целиком.
Неактивен
paulus написал:
Как-то Вы странно оперируете понятиями. Диск — это железка, на которую
пишутся данные. Диски собраны в массив, и, как я понял, Вы хотите общаться
с этим массивом целиком. Если так — то везде в Вашем вопросе я вместо
«диск» читаю слово «раздел».
1. fdisk /dev/md0
2. Совсем не понятно, обычно дистрибутивы делают несколько рейдов между
разделами на диске, а не наоборот, как у Вас, но, возможно, Вы знаете, как.
3. ПО базы надо ставить туда же, где и система — оно не создает нагрузки
Данные надо просто перенести на другой раздел (mv) и поставить в старое место
символическую ссылку (ln -s). Разумеется, с остановленным MySQL.
4. То же самое, но переносить отдельно каждую базу, и ставить на нее сим-
волическую ссылку.
Я только одного не пойму — какой в этом практический смысл? Всё равно
массив один, всё равно будет нагружаться целиком, и биться целиком.
Ну просто спрашиваю.
Вот по второму ответу,можно подроблнее как это делается или дайте ссылку где это описано.
Неактивен
Ну, например, разбиваете диски заранее (livecd, что-то еще), а потом ставите
ОС на уже созданные разделы.
Неактивен
Страниц: 1