公司的日志统计数据库使用 PHP+MongoDB 进行数据日志统计。

今天运维同事发现 php-fpm 进程数居高不下,只有在 reload 后才恢复,但是之后又一直处于上升状态。

查看了 php-fpm.conf 文件,更改了设置还是无效。

最后看了一下程序源码, 发现每次插入 mongo 后都没有关闭数据库。遂改之,瞬间生效,进程立即下降了。

又经过几次反复测试,确认为未使用 close() 引起的问题。

 1	//向mongodb中插入数据
 2	try{
 3		$mongo_conn = new Mongo("mongodb://" . MO_HOST, array("username" => MO_USER, "password" => MO_PWD, "db" => "admin", 'timeout' => DB_TIMEOUT));
 4		$mongo_db = $mongo_conn->selectDB(DB_PREFIX.$db);
 5		$mongo_insert = $mongo_db->selectCollection(DB_PREFIX_TAB.$db)->save($data);
 6		$mongo_conn->close(); //就是这一句代码:(
 7		if( $mongo_insert ){
 8			return true;
 9		}
10		do_log(201002);	//无法插入MongoDB
11	}catch(Exception $e){
12		do_log(201001); //无法连接MongoDB
13	}