我有一个128GB内存的服务器,但CPU始终显示超过100%(有时> 1000%)的顶级命令mysqld进程下面是my.cnf中的innodbconfiguration的一部分请告知如何微调configuration。 谢谢
innodb_buffer_pool_size = 60G #global buffer innodb_additional_mem_pool_size = 4M #global buffer innodb_status_file #extra reporting innodb_file_per_table #enable always innodb_flush_log_at_trx_commit = 0 #2/0 = perf, 1 = ACID innodb_table_locks = 0 #preserve table locks innodb_log_buffer_size = 256M #global buffer innodb_lock_wait_timeout = 60 innodb_thread_concurrency = 16 #recommend 2x core quantity innodb_commit_concurrency = 16 #recommend 4x num disks innodb_support_xa = 0 #recommend 0, disable xa to negate extra disk flush # skip-innodb-doublewrite #innodb_force_recovery = 3
首先,Linux系统上的CPU使用率> 100%并不意味着有问题,只是系统使用多个CPU。 一个16核心的系统可以有1600%的最大负载,所以在这样的系统上1000%的负载意味着相当的负载,但绝对不会超载。
服务器实际上performance不佳,还是仅仅是担心CPU使用率高的问题,但是对于专用的数据库服务器来说可能是完全正确的。
也就是说,如果服务器处于繁重的CPU负载下,那么拥有大量的RAM并不会有任何帮助; RAM只有帮助caching内容和减less磁盘I / O(在大多数情况下是瓶颈),而不是实际的处理。
在用户负载和实际查询方面,你应该看看你的服务器在做什么,然后尽可能地优化你的数据库(如表,键和索引) 或者,如果所有其他方式都失败了,就会抛出更多的CPU内核和/或find一种方法将负载分散到多个服务器上。
不知道你的服务器在做什么,不可能告诉你更多。