Mysql
MySQL / Fusion IO 配置問題
我需要一點配置優化。我認為我所擁有的非常好,但感覺仍有改進的空間。
目前配置
[mysqld] user=mysql datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock #innodb innodb_log_file_size = 256M innodb_log_buffer_size = 32M innodb_read_io_threads=8 innodb_write_io_threads=8 innodb_flush_log_at_trx_commit = 2 innodb_lock_wait_timeout=50 innodb_file_per_table innodb_buffer_pool_size=16G innodb_buffer_pool_instances=8 innodb_io_capacity=10000 #eliminating double buffering innodb_flush_method = O_DIRECT flush_time=86400 # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 #tmpdir=/dev/shm #tmpdir=/usr/tmpfs skip-name-resolve #skip-locking #safe-show-database query_cache_limit=4M query_cache_size=256M sort_buffer_size=8M read_rnd_buffer_size=1M max_connections=5000 interactive_timeout=60 wait_timeout=300 connect_timeout=30 thread_cache_size=32 key_buffer=124M tmp_table_size=4096M max_heap_table_size=256M join_buffer=16M max_connect_errors=2000 table_cache=2048 thread_concurrency=12 long_query_time=5 log-slow-queries=/var/log/mysql-slow.log #table_definition_cache=384 max_allowed_packet=1024M #server-id=20 #log-bin=mysql-bin #expire_logs_days=10 event_scheduler=ON #master-host = #master-user = #master-password = #master-port = 3306 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
專用數據庫伺服器規格
- 虛擬機
- 雙四路 Xeon X5680 @ 3.33GHz (8 vCPU)
- 24GB 記憶體
- Fusion IO 掛載在 /var/lib/mysql
- 所有數據庫之間大約總共有 500 個表
我知道這類問題確實需要關注數據庫伺服器,但我很樂意根據需要將資訊附加到這個問題,以獲得更好的配置。
我在這裡先向您的幫助表示感謝。
這類似於我兩個月前回答的問題:MySQL using too much CPU
FusionIO 傾向於 CPU 攻擊性強。你將不得不反擊
調整 InnoDB
- 更多讀取執行緒(innodb_read_io_threads),也許 16
- 更多的寫執行緒(innodb_write_io_threads),也許 16
- 提高或降低innodb_io_capacity以匹配 FusionIO 設備的 IOP
- 將日誌緩衝區 ( innodb_log_buffer_size ) 提高到 1G
- 將日誌文件 ( innodb_log_file_size ) 提高到 128M
將盡可能多的 MyISAM 轉換為 InnoDB,因為更改
.MYD
記憶體在作業系統記憶體中,而不是任何 MySQL 緩衝區中我還會將max_connections降低到 2000,除非您確定會同時獲得超過 4500 個數據庫連接。如果確實需要 5000,請將 VM 的 RAM 升級到 48GB。
試一試 !!!