@Terry [#4楼](#comment4)
简单说就是阿里云的芒果服务限制连接数1000。php服务器的进程数超了这个数字。导致连接数占满。导致报错
启用replicaSet仅启到主备作用。无法分担连接数。(主从库连接数相同)
php mongodb扩展不支持URI中的maxPoolSize
php-fpm1子进程产生1 mongo TCP连接 进程存在时不释放。超过时会造成连接数占满
mongo服务不建议使用短链接
因此减少分配给该项目的php-fpm进程数。以此稳定mongo的连接数
另外不是很清楚yii\mongodb\Connection中关闭连接的方法是否能真正关闭连接,看上去只是reset了几个属性。
line:378
/**
* Closes the currently active DB connection.
* It does nothing if the connection is already closed.
*/
public function close()
{
if ($this->manager !== null) {
Yii::trace('Closing MongoDB connection: ' . $this->dsn, __METHOD__);
$this->manager = null;
foreach ($this->_databases as $database) {
$database->clearCollections();
}
$this->_databases = [];
}
}