我有一个Rails 4.x应用程序运行在服务器A上,MySQL运行在服务器B上。
使用ab对我的API调用进行负载测试时,我注意到MySQL服务器正在显示CPU活动。因此,我返回代码并检查,但是没有触发任何SQL语句,以确保我在筛选器之前也禁用了所有语句,但是MySQL服务器仍然显示CPU负载。
我去了MySQL跑
show processlist;但是,这也没有显示任何活动的SQL语句。
为什么DB服务器上会有负载?
发布于 2014-01-06 22:32:10
Rails应用程序在app加载时将连接池初始化到已配置的数据库,并为每个定义用于填充从DB到该模型实例的运行时映射的ActiveModel加载基本模式数据。
一旦加载了应用程序并运行了通信量,这些连接/查询就会发生。
如果这不是数据库服务器上的活动的责任所在,您将需要使用其他工具来查看是什么原因造成的。例如,NewRelic的系统监视工具非常适合在与进程运行相关的时间内快照CPU/内存的使用情况。这将帮助您排除使用资源与运行在DB服务器上的其他事情的MySQL本身。
发布于 2014-01-13 09:07:38
根据这个文章,像Innodb这样的存储引擎可能每个线程都有自己的内存分配和/或全局内存分配,这可能是CPU开销的一部分。如果这是一个股票(未调优) MySql安装,您可能只是看到基线CPU活动。这篇文章提到了许多地方,这些地方可能表明可以调优以减少这种占用。
https://stackoverflow.com/questions/20917531
复制相似问题