2017-09-05 101 views
0

我有一個CentOS 6.5 VM有16 GB RAM。16GB RAM服務器中的MySQL優化

我覺得MySQL的相當緩慢的響應,我已經跑了MySQLTuner腳本,並從給定的建議,我怎麼可以改變我的my.cny配置文件,以提高性能?

下面是結果最後的MySQL重啓後第2天:

[--] Skipped version check for MySQLTuner script 
running supported MySQL version 5.7.17-log 
[OK] Operating on 64-bit architecture 

-------- Storage Engine Statistics ----------------------------------------------------------------- 
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA 
[--] Data in InnoDB tables: 111M (Tables: 88) 
[OK] Total fragmented tables: 0 

-------- Performance Metrics ----------------------------------------------------------------------- 
[--] Up for: 1d 20h 44m 5s (178K q [1.111 qps], 20K conn, TX: 260M, RX: 24M) 
[--] Reads/Writes: 84%/16% 
[--] Binary logging is enabled (GTID MODE: OFF) 
[--] Physical Memory  : 15.5G 
[--] Max MySQL memory : 76.2G 
[--] Other process memory: 40.8M 
[--] Total buffers: 10.1G global + 448.2M per thread (151 max threads) 
[--] P_S Max memory usage: 72B 
[--] Galera GCache Max memory usage: 0B 
[!!] Maximum reached memory usage: 19.3G (124.21% of installed RAM) 
[!!] Maximum possible memory usage: 76.2G (490.99% of installed RAM) 
[!!] Overall possible memory usage with other process exceeded memory 
[OK] Slow queries: 0% (0/178K) 
[OK] Highest usage of available connections: 13% (21/151) 
[OK] Aborted connections: 0.04% (8/20336) 
[OK] Query cache is disabled by default due to mutex contention on multiprocessor machines. 
[OK] Sorts requiring temporary tables: 0% (0 temp sorts/4K sorts) 
[OK] No joins without indexes 
[OK] Temporary tables created on disk: 24% (420 on disk/1K total) 
[OK] Thread cache hit rate: 93% (1K created/20K connections) 
[OK] Table cache hit rate: 21% (416 open/1K opened) 
[OK] Open file limit used: 0% (3/1K) 
[OK] Table locks acquired immediately: 100% (167 immediate/167 locks) 
[OK] Binlog cache memory access: 100.00% (4605 Memory/4605 Total) 

-------- Performance schema ------------------------------------------------------------------------ 
[--] Memory used by P_S: 72B 
[--] Sys schema is installed. 

-------- MyISAM Metrics ---------------------------------------------------------------------------- 
[!!] Key buffer used: 18.2% (3M used/16M cache) 
[OK] Key buffer size/total MyISAM indexes: 16.0M/43.0K 
[!!] Read Key buffer hit rate: 85.5% (62 cached/9 reads) 

-------- InnoDB Metrics ---------------------------------------------------------------------------- 
[--] InnoDB is enabled. 
[--] InnoDB Thread Concurrency: 0 
[OK] InnoDB File per table is activated 
[OK] InnoDB buffer pool/data size: 10.0G/111.5M 
[OK] InnoDB log file size/InnoDB Buffer pool size: 28.0M * 100/10.0G should be equal 25% 
[OK] InnoDB buffer pool instances: 10 
[--] Number of InnoDB Buffer Pool Chunk : 80 for 10 Buffer Pool Instance(s) 
[OK] Innodb_buffer_pool_size aligned with Innodb_buffer_pool_chunk_size & Innodb_buffer_pool_instances 
[OK] InnoDB Read buffer efficiency: 99.99% (41669876 hits/ 41674787 total) 
[!!] InnoDB Write Log efficiency: 34.26% (17312 hits/ 50528 total) 
[OK] InnoDB log waits: 0.00% (0 waits/33216 writes) 

-------- Replication Metrics ----------------------------------------------------------------------- 
[--] Galera Synchronous replication: NO 
[--] This server is acting as master for 1 server(s). 
[--] No replication setup for this server. 

-------- Recommendations --------------------------------------------------------------------------- 
General recommendations: 
Control warning line(s) into /var/log/mysqld-error.log file 
Control error line(s) into /var/log/mysqld-error.log file 
Reduce your overall MySQL memory footprint for system stability 
Dedicate this server to your database for highest performance. 

,這是我my.cny

[mysqld] 
innodb_buffer_pool_size = 10G 
innodb_log_file_size = 28M 
innodb_log_files_in_group = 28M 
innodb_buffer_pool_instances=10 
datadir=/var/lib/mysql 
socket=/var/lib/mysql/mysql.sock 
binlog_cache_size = 32M 
key_buffer_size = 16M 
table_open_cache = 64M 
sort_buffer_size = 128M 
read_buffer_size = 64M 
read_rnd_buffer_size = 128M 
join_buffer_size = 128M 
myisam_sort_buffer_size = 32M 
thread_cache_size = 4 
query_cache_size= 32M 
query_cache_limit = 1M 
log-error=/var/log/mysqld-error.log 
pid-file=/var/run/mysqld/mysqld.pid 
skip-name-resolve 
symbolic-links=0 

謝謝!

+0

也許這應該問https://dba.stackexchange.com/ – 2017-09-05 05:22:37

+0

有關更多的答案,請按照http://mysql.rjweb.org/doc.php/mysql_analysis中的建議 - 緩慢日誌和調優。 –

回答

0

@ user3659206您的配置請求非常極端。 innodb_log_files_in_group = 28M應該是2,則默認 如果將放#在接下來的4行的前面(所以本系統採用的缺省值) # sort_buffer_size = 128M# read_buffer_size = 64M # read_rnd_buffer_size = 128M # join_buffer_size = 128M 你會驚訝。關機/重啓後。

使用mysqlcalculator.com查看您的當前配置已準備好使用您請求的值爲82GB。

再次運行您的mysqltuner以查看減少的內存佔用量。
請發佈您的新mysqltuner,以便我們都可以識別您的進度。

+0

任何my.cnf更改完成?它不是,請考慮17年9月5日答案並考慮此更改, innodb_buffer_pool_size = 1G#from 10G支持小於120M的數據 此服務器只有16GB RAM,正常運行7天后請重新發布完整的MySQLTuner報告並完成my.cnf。 –