mongodb 避免Out of semaphores to get db connection error

原创 2015年11月17日 19:03:26
错误描述:com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db
 
MongoDB 并发测试,报出上述错误。究其原因,是数据库连接数太少,资源耗尽。查看com.mongodb.MongoOptions源代码,其中有 connectionsPerHost和threadsAllowedToBlockForConnectionMultiplier两个重要的属性。

   connectionsPerHost:每个主机的连接数

   threadsAllowedToBlockForConnectionMultiplier:线程队列数,它以上面connectionsPerHost值相乘的结果就是线程队列最大值。如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。

   connectionsPerHost默认是10,threadsAllowedToBlockForConnectionMultiplier默认是5,也就是线程池有50个连接数可供使用。因此只要将这个属性的值加大就可以避免上述错误。

 

   其它属性设置:

   maxWaitTime:最大等待连接的线程阻塞时间

   connectTimeout:连接超时的毫秒。0是默认和无限

   socketTimeout:socket超时。0是默认和无限

   autoConnectRetry:这个控制是否在一个连接时,系统会自动重试

 

java设置方法:

MongoOptions options = new MongoOptions();
        options.connectionsPerHost = 100;//链接池数量 默认10 。避免Out of semaphores to get db connection error
        options.autoConnectRetry = true;
        options.threadsAllowedToBlockForConnectionMultiplier=5;
        options.slaveOk = true;
        mongo = new Mongo(replicaSetSeeds, options);


MongoDB数据库连接池

转载:查看原文 关键词:com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db 今天做MongoDB并发...
  • azhao_dn
  • azhao_dn
  • 2012年02月20日 16:17
  • 10496

com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db connection

解决com.mongodb.DBPortPool$SemaphoresOut: Out of semaphores to get db connection错误 Mongo reader = null...
  • u010443481
  • u010443481
  • 2016年06月20日 08:21
  • 389

redis连接异常的解决方案

redis连接异常的解决方案 最近在做高并发架构,发现程序偶尔报错: redis.clients.jedis.exceptions.JedisConnectionException: Could n...
  • weinianjie1
  • weinianjie1
  • 2016年01月30日 12:27
  • 27223

TCP连接的状态详解以及故障排查

我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。(总结网络上的内容) 1、TCP状态 linux查看tcp的状态命令: 1)、netstat -n...
  • loophome
  • loophome
  • 2016年02月26日 18:29
  • 2214

maven+springmvc+mybatis项目从properties读数据库连接属性时拿不到连接,的研究与解决方案

初学过程中遇到的问题,记录并分享一下,如果文中有错误,望指正,谢谢~ 那么现在进入正题:最近在看慕课网一个秒杀课程的视频跟着老师敲啊敲,当运行到第一个junit测试时,偏偏他运行就可以我运行就错了。...
  • tianshen0128
  • tianshen0128
  • 2016年06月25日 18:18
  • 2463

linux AIO (异步IO) 那点事儿

在高性能的服务器编程中,IO 模型理所当然的是重中之重,需要谨慎选型的,对于网络套接字,我们可以采用epoll 的方式来轮询,尽管epoll也有一些缺陷,但总体来说还是很高效的,尤其来大量套接字的场景...
  • bytxl
  • bytxl
  • 2015年08月07日 09:12
  • 565

[性能调整] 关于Oracle连接超时的问题(WARNING: inbound connection timed out (ORA-3136)连接超时问题)

/* *时间:2009-03-010 *环境:AIX5.3   Oracle10g *WARNING: inbound connection timed out (ORA-3136)连接超时问题 */...
  • zhaoyangyao888
  • zhaoyangyao888
  • 2013年02月19日 16:21
  • 4798

应用设置超时时间大于3秒而实际connection timed out时间3秒的问题

Overriding the default Linux kernel 20-second TCP socket connect timeout Whatever language ...
  • caomiao2006
  • caomiao2006
  • 2016年06月11日 22:14
  • 1446

HttpClient的超时用法小记

HttpClient在使用中有两个超时时间,是一直接触和使用的,由于上次工作中使用httpClient造成了系统悲剧的情况,特地对它的两个超时时间进行了小小的测试,在这里记录下。        测...
  • xinying0424
  • xinying0424
  • 2014年06月30日 15:56
  • 14812

MongoDB3.2中与DB数据库操作相关常用方法介绍

随着互联网技术的飞速发展,对大数据存储和处理技术方面要求也越来越高,MongoDB最为一种NoSQL数据库,以文档模式自由,数据高效存取方式著称,提供多个客户端驱动,为企业的数据存储和查询提供了完美的...
  • zhaoyong421127
  • zhaoyong421127
  • 2016年04月25日 15:35
  • 1131
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mongodb 避免Out of semaphores to get db connection error
举报原因:
原因补充:

(最多只允许输入30个字)