11月 212012
 

PHP的mongo模块使用域名访问mongodb时,其连接池是用域名做key来记录长连接的

 

 Posted by at 下午 2:14
7月 212012
 

要解决的问题

使用PHP 的mongo模块连接mongodb时,可能会出现打开的文件描述符未关闭的情况,直到文件描述符的数量达到limit的限制而出错。

 

启动mongod,设置最大连接数为5(方便调试):

消费连接数:

测试脚本mongo.php:

测试:

 

发现错误信息(结果却还是没有出现文件描述符未关闭的情况):

19:max number of retries exhausted, couldn’t send query
4:couldn’t get response header

 Posted by at 上午 12:45
7月 152012
 

实例代码:

 

  1. 当IP地址可以ping通,但是端口未开启时(直接返回Reset数据包),返回错误信息为:
    错误号: 0; 错误信息:Transport endpoint is not connected
  2. 当IP地址不能ping通,或者发送syn数据包,但是不能收到Reset或sys-act数据包时,返回错误信息为:
    错误号: 0; 错误信息: Operation now in progress

 

 Posted by at 下午 11:10
3月 172012
 

关于mongodb的db.stats() 的解释:

其中:
collections: 集合的个数
objects: 对象的个数, 循环每个集合得到的,每个集合的记录数(nrecords)之和
avgObjSize: 平均每个对象的大小, 通过 dataSize / objects 得到
dataSize: 每个集合的dataSize之和
storageSize: 每个集合的storageSize之和
fileSize: db下面的物理存储文件的大小; 物理存储文件比实际的数据要大一些,这是是mongo的预分配机制

这里最难理解的大概就是 storageSize了,它和dataSize的差异参看: http://blog.nosqlfan.com/html/2654.html

相关代码db\dbcommands.cpp:

 

 


 

 

 Posted by at 上午 4:46
6月 182011
 

* 比较方便的办法是下载一个合适的二进制的mongodb的包,直接复制到合适的目录
* 自己编译安装:

  1. 首先, mongodb的编译是通过scons来构建的, 所以要先安装scons, 参考: http://www.scons.org/
  2. scons 是一个python工具,所以你要先安装python
  3. 假设你上面的已经安装成功了
  4. mongodb还依赖下面东西:
  • devel/boost
  • devel/libexecinfo
  • devel/pcre
  • lang/spidermonkey

  5. 假设你安装完了上面依赖, 好了, scons . ; 但愿你是幸运的

——————–
提示: boost安装可以使用yum:
yum install boost-devel

pcre的安装: http://www.pcre.org/

spidermonkey的安装: http://www.mongodb.org/display/DOCS/Building+Spider+Monkey

重要: gcc < 4编译不行

 Posted by at 上午 4:39