配置LEMP系统实用教程及技巧示例(1)(14)
4.1 优化你的my.cnf
你应该使用mysqltuner.pl或tuning-primer.sh脚本,查看你应该在my.cnf文件中调整哪些设置。最重要的变量之一是query_cache_size,如果你使用InnoDB表,
innodb_buffer_pool_size.
这是来自配备16GB内存的测试服务器的示例配置,大约30个数据库有一半是MyISAM表,另一半是是InnoDB表——这对于使用基准测试工具(ab)进行压力测试的数据库驱动的测试网站来说效果相当好:
[...]
key_buffer = 256M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 100
table_open_cache = 16384
table_definition_cache = 8192
sort_buffer_size = 256K
read_buffer_size = 128K
read_rnd_buffer_size = 256K
myisam_sort_buffer_size = 64M
myisam_use_mmap = 1
thread_concurrency = 10
wait_timeout = 30
myisam-recover = BACKUP,FORCE
query_cache_limit = 10M
query_cache_size = 1024M
query_cache_type = 1
join_buffer_size = 4M
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
expire_logs_days = 10
max_binlog_size = 100M
innodb_buffer_pool_size = 2048M
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 0
innodb_thread_concurrency = 8
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_io_capacity = 50000
innodb_flush_method = O_DIRECT
innodb_file_per_table
innodb_additional_mem_pool_size = 256M
transaction-isolation = READ-COMMITTED
innodb_support_xa = 0
innodb_commit_concurrency = 8
innodb_old_blocks_time = 1000
[...]
请注意:如果你需要遵守ACID规定,必须将innodb_flush_log_at_trx_commit设成1。想了解这方面的更多信息,请访问:http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit。
只要你在固态硬盘上使用MySQL,才应该将innodb_io_capacity设成很高的值。如果你在普通硬盘上使用MySQL,最好别理这一行。
4.2 使用固态硬盘
如果你在固态硬盘上使用MySQL,可以大幅提升性能,因为这大大降低磁盘的输入/输出。为此,最容易的办法就是把/var/lib/mysql目录挂载到固态硬盘上。
评论暂时关闭