mongodb close() 引发的PHP-FPM进程“血案”

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

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

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

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

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

        //向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
        }

添加新评论