16g8核MySQL配置
在你的16g8核MySQL服務器上,你需要進行一些優化來最大化性能。以下是一些配置和建議。
在my.cnf中進行以下配置:
#配置MySQL服務器 [mysqld] #緩存配置 query_cache_type = 1 query_cache_size = 256M query_cache_limit = 10M table_cache = 8192 table_definition_cache = 8192 join_buffer_size = 2M sort_buffer_size = 2M tmp_table_size = 64M max_heap_table_size = 64M #連接配置 max_connections = 500 max_user_connections = 50 wait_timeout = 30 interactive_timeout = 300 #InnoDB配置 innodb_buffer_pool_size = 8G innodb_log_file_size = 256M innodb_flush_log_at_trx_commit = 1 innodb_thread_concurrency = 16 innodb_read_io_threads = 8 innodb_write_io_threads = 8 innodb_flush_method = O_DIRECT innodb_file_per_table = 1
在此配置中,query_cache_type用于啟用查詢緩存,query_cache_size設置緩存大小為256M,query_cache_limit設置查詢結果的最大緩存大小為10M。table_cache和table_definition_cache分別設置緩存表和表定義的大小,join_buffer_size和sort_buffer_size設置連接和排序的緩存大小,tmp_table_size和max_heap_table_size設置暫時表的最大大小。
max_connections和max_user_connections分別為連接和每個用戶的最大連接數,wait_timeout和interactive_timeout分別為等待時間和交互超時。innodb_buffer_pool_size設置InnoDB緩沖池的大小,innodb_log_file_size設置InnoDB事物日志的大小,innodb_flush_log_at_trx_commit設置每個事物的提交日志是否寫入磁盤,innodb_thread_concurrency、innodb_read_io_threads和innodb_write_io_threads分別設置并發線程數、讀線程數和寫線程數,innodb_flush_method設置刷新方法。
你還需要調整你的系統內核參數。在/etc/sysctl.conf中有以下配置:
# TCP參數,對于高并發與小文件的Web服務考慮把一些參數調小 # 允許系統打開的端口范圍 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 # 內存相關性能參數,根據內存的大小調整 # 內存碎片整理 vm.overcommit_memory = 1 vm.overcommit_ratio = 50 # 避免一些攻擊 net.ipv4.tcp_syncookies = 1
在這個配置中,我們增加了net.ipv4.tcp_local_port_range中允許系統打開的端口范圍,并在net.ipv4.tcp_tw_recycle和net.ipv4.tcp_tw_reuse中將TIME_WAIT狀態的端口重用。vm.overcommit_memory消除內存碎片并在net.ipv4.tcp_syncookies中避免一些攻擊。
對于16G 8核的MySQL服務器,你還需要使用256GB或更多的固態驅動器和64GB或更多的內存來獲得更好的性能。