记一次mongo线上事故

Posted on 2017-07-28 10:47:33 | 0 comments | 198℃ | Mongo

序言

有的坑始终是要踩的,有的路始终是要走的

本次分享的是在公司的一个真实线上事故,持续时长2小时,现分享出来供大家参考

线上mongodb架构

线上采用mongo副本集群的方式,总共3台机器,如下图:

  • 服务器为阿里云香港
  • mongodb版本为3.2
  • primary的priority设置为2
  • 其他secondary的priority设置为1

事故现象

PHP抛异常,连接mongo出错。首先猜测是网络原因导致php-fpm对mongo错误连接进行了缓存,在通知运维重启php-fpm后问题依旧。

登服...

mongo的findAndModify应用之实现原子锁

Posted on 2016-12-06 20:35:29 | 2 comments | 306℃ | Mongo

打开自己的博客,发现已经1个多月没有更新博客了,不忍直视!-_-|||

决定下班后来一发!

通常们会用mongo的findAndModify来生成类似mysql的自增ID,例如


/**
 * Generate a increase id.
 * @author Hisune <hi@hisune.com>
 * @param string $name Key name.
 * @return int Increase id.
 */
public static function generateId($name)
{
    /* @var $variable \MongoCollection */
    // !!! 以下所有Collection::get君代表返回对应mong...

Windows下的mongo启动/关闭vbs脚本

Posted on 2016-10-09 15:05:53 | 0 comments | 175℃ | Mongo

上代码

很久以前写的一个vbs脚本,用来管理windows下的mongo开启和关闭,备忘顺便分享下来:


' 公用函数
Function Is_Runing(ProcessName)
    On Error Resume Next
        strComputer = "."
        Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name = '" & ProcessName & "'")
        I...

Mongodb logs日志含义说明

Posted on 2015-05-13 11:24:18 | 0 comments | 323℃ | Mongo

关于mongodb的日志含义,中文资料没有,只好自己动手了,下面是的总结,拿去不谢!

ntoreturn:1 keyUpdates:0 numYields: 1 locks(micros) r:1503023 reslen:48 952ms

ntoreturn:1   请求返回的文档个数
keyUpdates:0  请求导致的索引更新个数
numYields:1   请求产生的锁的次数
locks(micros) r:1503023 时间单位:微妙,数据库读取的锁时间,其他锁:
R - 全局读锁
W - 全局写锁
r - 数据库读锁
w - 数据库写锁
reslen:48  长度单位bytes,返回的结果长度
952ms     执行这条语句的时间,默认100毫秒mongo...
UP