1

我的网络应用程序遇到了一个奇怪的问题。我使用 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 峰值,这与此调用有关:

NewRelic 堆栈跟踪

这不会每次都发生 - 但它发生足以引起关注。我尝试创建一个简单的脚本来连接到replicadb 组 1000 次并测量它所花费的秒数,而且速度非常快 - 所以我知道这不是问题。任何人对此有任何见解,或者有更好的方法来解决这个问题吗?

4

0 回答 0