我的网络应用程序遇到了一个奇怪的问题。我使用 PHP 和 CodeIgniter 运行主从 (3) 环境。为了方便和读/写数据库组,我已将组设置default
为主机,replica
组设置为从机。默认情况下,我们使用 master 进行读取,以防信息是时间敏感的并且不受复制延迟的影响。
为了加载replica
类以在我的模型中使用 - 我已经完成了以下操作:
class Api_methods_v4 extends Model {
public $clusterDB;
public $stats;
function __construct() {
parent::Model();
if (is_resource($this->clusterDB)) {
}
else {
$this->clusterDB = $this->load->database('replica', TRUE);
}
}
....
}
然后在我的代码中,我指this->clusterDB->query($sql)
的是命令来引用replica
实例而不是default
组。
问题是我使用 NewRelic 来监控我的应用程序,我通常可以通过应用程序获得非常高的 PHP 峰值,这与此调用有关:
这不会每次都发生 - 但它发生足以引起关注。我尝试创建一个简单的脚本来连接到replica
db 组 1000 次并测量它所花费的秒数,而且速度非常快 - 所以我知道这不是问题。任何人对此有任何见解,或者有更好的方法来解决这个问题吗?