mongodb 连接 不能即时 释放
来源:互联网 发布:外汇模拟软件app 编辑:程序博客网 时间:2024/06/05 19:56
MongoDB1.3版本以上都通过MongoClient类进行连接,其策略默认就是长连接,而且无法修改。
所以连接数其实取决于fpm的客户进程数。如果fpm量太大,必然会导致连接数过多的问题。如果你所有机器上一共有1000个fpm,那么就会创建1000个长连接,按mongodb服务端的策略,每个连接最低消耗1M内存,那这1G内存就没了。
所以直接方案是每次使用完后进行close操作,这样不会让服务端需要保持大量的连接。
而close函数也有一个坑,就是默认只关闭写连接(比如master或者replica sets的primary),如果要关闭全部连接,需要添加参数true即:$mongo->close(true)
每次关闭连接的方案可以有效减少服务器的并发连接数,除非你的操作本身非常慢。但是同样也有它的问题,比如每次不能复用之前的tcp连接,需要重新进行连接,这样连接耗时会比较高,特别是用replica sets的时候,需要创建多个tcp连接。
所以最终可能只有两个方案
一是减小fpm的数量
二是自建连接池,通过连接池将之个客户端的连接收敛成固定数量对MongoDB的连接。
所以连接数其实取决于fpm的客户进程数。如果fpm量太大,必然会导致连接数过多的问题。如果你所有机器上一共有1000个fpm,那么就会创建1000个长连接,按mongodb服务端的策略,每个连接最低消耗1M内存,那这1G内存就没了。
所以直接方案是每次使用完后进行close操作,这样不会让服务端需要保持大量的连接。
而close函数也有一个坑,就是默认只关闭写连接(比如master或者replica sets的primary),如果要关闭全部连接,需要添加参数true即:$mongo->close(true)
每次关闭连接的方案可以有效减少服务器的并发连接数,除非你的操作本身非常慢。但是同样也有它的问题,比如每次不能复用之前的tcp连接,需要重新进行连接,这样连接耗时会比较高,特别是用replica sets的时候,需要创建多个tcp连接。
所以最终可能只有两个方案
一是减小fpm的数量
二是自建连接池,通过连接池将之个客户端的连接收敛成固定数量对MongoDB的连接。
0 0
- mongodb 连接 不能即时 释放
- mongodb不能远程连接
- mongodb不能远程连接
- spring 配置dbcp连接池不能释放,
- Spring配置DBCP连接池不能释放的问题
- Mongodb释放内存
- mongodb释放内存
- Spring+hibernate中不能释放tomcat连接池中连接的解决办法
- Mongodb解决不能连接到服务器的错误
- mongodb解决只能本地连接不能远程连接问题
- Mongodb解决不能连接到服务器的错误
- 解决Mongodb不能连接到服务器的问题
- 使用SharedPreferences即时存储之后,不能即时获取到数据
- [ mongoDB ] - MongoDB 连接池
- [ mongoDB ] - MongoDB 连接池
- mongodb连接
- MongoDB - 连接
- MongoDB - 连接
- [Android]之一:Android系统下载管理DownloadManager
- Markdown语法简介
- 【LintCode】用栈实现队列
- 仿网易评论加载动画
- 指定位置签到-百度地图
- mongodb 连接 不能即时 释放
- iOS开发问题:系统提示框是否同意获取当前位置提示框自动消失问题
- (四)Jetson TK1上安装ZED SDK
- OS 64)指定的网络名不再可用 : winnt_accept: Asynchronous AcceptEx failed.
- 机房---三
- 语音增强算法总结
- python中对文件、文件夹(文件操作函数)的操作
- Picasso使用target不显示图片
- 线段树 开动