我们的MySQL服务器最近一直在使用大量的CPU(几次达到100%,并停留了一段时间),我注意到它的CPU负载都在一个CPU的一个核心上。 我希望能够在我的服务器上传播到全部4个。
我一直在调整MySQL的设置,以使用更多的内存和更less的CPU,但它偶尔会达到非常高的CPU使用率。
似乎所有关于这个主题都是指thread_concurrency(我读过的只是solaris设置)。 我能在Linux上做什么?
谢谢。
你是对的,thread_concurrency只适用于Solaris,在MySQL5.6及以后版本中已经弃用了。 我不认为你可以使用MyISAM的多核/ cpus。 要充分利用硬件,请使用InnoDB。
这可能会帮助你更好地理解事物。
此variables的正确值取决于环境和工作负载。 您将需要尝试一系列不同的值来确定适用于您的应用程序的值。 build议值是CPU数量加上磁盘数量的2倍。
此variables的范围是0到1000.在MySQL 5.0.19之前,将值20或更高解释为无限并发。 从5.0.19开始,可以通过将值设置为0来禁用线程并发检查。禁用线程并发检查使InnoDB能够根据需要创build多个线程。
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_thread_concurrency
为了简单起见,无论InnoDB引擎是多核的,MySQL中执行的每个查询只使用1个CPU核心。
当你有许多不同的查询运行在相同的地方并且CPU和数据被删除的时候,MySQL里的所有多核优化都会有所帮助,但是如果你有一些大的查询需要花费几分钟/小时来完成,那么它总是只使用1个CPU核心。 (如果你有这样的疑问,你应该购买CPU速度更快,内核数量更less的服务器。)