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

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

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

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

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

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