我有一个专用的16核12 GB的RAM的Mysql服务器,performance相当不好,因为我configuration了一个16 GB的服务器,我想这解释了为什么在世界上该网站现在需要超过500秒来呈现一个页面。 我使用memcachedcachingquires和使用InnoDB作为数据库引擎。
#8 core/16GB config stolen from http://groups.drupal.org/node/28830 back_log = 50 max_connect_errors = 9999999 table_cache = 5000 binlog_cache_size = 1M max_heap_table_size = 128M sort_buffer_size = 500K join_buffer_size = 500K thread_cache_size = 100 thread_concurrency = 16 query_cache_size = 512M query_cache_limit = 8M query_cache_min_res_unit = 2K thread_stack = 192K tmp_table_size = 384M long_query_time = 2 # *** INNODB Specific options *** innodb_additional_mem_pool_size = 80M innodb_buffer_pool_size = 12G innodb_file_io_threads = 4 innodb_thread_concurrency = 16 innodb_log_buffer_size = 20M innodb_log_file_size = 800M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 innodb_file_per_table = 1
任何关于优化my.cnfconfiguration的帮助,甚至是为了一个新的configuration都会很感激。
如果MySQL试图使用比系统更多的内存资源,那么在12GB的机器上configuration16GB的唯一方法就是问题。 大多数MySQL服务器被configuration为使用太多的内存,但是这不会导致它们从第1天开始运行不佳。如果该盒子没有交换,并且MySQL将OOM杀死,那不是事实上它是一个16GB的configuration在一个12GB的盒子。
如果问题在MySQL端,您可以先查看进程列表SHOW PROCESSLIST; 。 如果花费500秒,您肯定会看到一些挂起的查询。 如果正在执行的查询被截断,则可以运行SHOW FULL PROCESSLIST; 。
我也build议打开慢查询日志logging 。 一旦识别出任何问题查询,就可以使用EXPLAIN语句来查看您的查询是否正在使用您拥有的索引。
如果将问题隔离到数据库,仍然有很多variables。 第一步是找出哪些查询正在缓慢地进行。 您可能会发现,改善查询将对服务器端configuration更改提供最大的改进。