公司的日志统计数据库使用 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 }