从大约2周开始,我正在处理LAMP堆栈中最奇怪的问题之一.与MySQL服务器的长连接短连接失败,并显示错误消息:
Warning: mysqli::real_connect(): (HY000/2002): Cannot assign requested address in ..
Run Code Online (Sandbox Code Playgroud)
MySQL是在不同的"盒子"上,托管在Rackspace Cloud今天我们将它的版本降级为
Ver 14.14 Distrib 5.1.42, for debian-linux-gnu (x86_64).
Run Code Online (Sandbox Code Playgroud)
根据它的状态变量,数据库服务器非常忙于处理每秒查询平均值:5327.957.
MySQL处于log-warnings = 9但没有记录连接拒绝的争用.站点和齿轮工作者脚本都会因为错误而失败,假设概率为1%.没有服务器负载似乎不是我们监控的因素.(CPU负载,IO负载或MySQL负载)最大数据库连接数(max_connections)设置为200但我们从未处理过与数据库的100多个同时连接
它有和没有防火墙软件.
我怀疑TCP网络问题而不是PHP/MySQL配置问题.
任何人都可以告诉我如何找到它?
更新:
连接代码是:
$this->_mysqli = mysqli_init();
$this->_mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 120);
$this->_mysqli->real_connect($dbHost,$dbUserName, $dbPassword, $dbName);
if (!is_null($this->_mysqli->connect_error)) {
$ping = $this->_mysqli->ping();
if(!$ping){
$error = 'HOST: {'.$dbHost.'};MESSAGE: '. $this->_mysqli->connect_error ."\n";
DataStoreException::raiseHostUnreachable($error);
}
}
Run Code Online (Sandbox Code Playgroud)