2014.06.19.001---故障报告

事故发生时间

事故简述

事故责任方

是否解决

19:21-20:15

IISserverD盘即将溢出

一、事故描写叙述

在19:21收到警报。显示IIS/Routerserver的D盘空间即将负荷。

二、事故处理过程:

1.  登录server查看后。发现router的日志非常大,有超过100G,导致无法打开。   决定,先重新启动router服务,删除日志。

2.  重新启动完成router后。日志又出现了猛刷的情况。进入查看,显示

2014-06-19T20:08:25.170+0800[conn8956] end connection 10.4.1.101:7389(100 connections now open)

2014-06-19T20:08:25.170+0800[mongosMain] connection accepted from    10.4.1.101:7390#8957 (101 connections now open)

2014-06-19T20:08:25.170+0800[conn8957]  authenticate db: minger   { authenticate: 1, user: "client",nonce: "xxx", key: "xxx" }

2014-06-19T20:08:25.170+0800[conn8957] end connection 10.4.1.101:7390(100 connections now open)

2014-06-19T20:08:25.170+0800[mongosMain] connection accepted from    10.4.1.101:7391#8958 (101 connections now open)

2014-06-19T20:08:25.170+0800[conn8958]  authenticate db: minger   { authenticate: 1, user: "client",nonce: "xxx", key: "xxx" }

2014-06-19T20:08:25.170+0800[conn8958] end connection 10.4.1.101:7391(100 connections now open)

2014-06-19T20:08:25.170+0800[mongosMain] connection accepted from    10.4.1.101:7392#8959 (101 connections now open)

2014-06-19T20:08:25.170+0800[conn8959]  authenticate db: minger   { authenticate: 1, user: "client",nonce: "xxx", key: "xxx" }

2014-06-19T20:08:25.170+0800[conn8959] end connection 10.4.1.101:7392(100 connections now open)

2014-06-19T20:08:25.186+0800[mongosMain] connection accepted from    10.4.1.101:7393#8960 (101 connections now open)

2014-06-19T20:08:25.186+0800[conn8960]  authenticate db: minger   { authenticate: 1, user: "client",nonce: "xxx", key: "xxx" }

3.  这个问题在阿里也一度遇到过,是因为阿里云的物理机的设置导致tcp请求 上不去。而出现这样的情况。

4.  将IIS的tcp pool关闭,mongodb的pool关闭。随机日志不再狂刷。

三、分析原因

Mongodb 驱动程序採用的连接池的方式连接到数据库,眼下从观察到的情况是应用一开启便依据变量的设置。建立所有连接。然后提供给程序使用,而且一旦当中某个连接到数据库的訪问失败,则会清空整个连接池到这台数据库的连接,并又一次建立连接。 

    而mongodb对中断连接的垃圾清理工作则是懒惰的被动清理方式,假设驱动程序端配 置的连接数过大。一旦发生重连,则会导致mongo端堆积大量的垃圾连接数据,导致主机资源耗尽。

windowsserver,timewaitdelay  最小值是30秒。而mongodb pool size 设为2000

也就是说。假设2000个连接里有一个由于网络关系断开了,就要又一次建立新的2000个连接,之前的2000个由于timewaitdelay的原因。临时还不能释放。假设在30秒内。由于网络原因,反复建立连,接导致将60000个port都用尽了。就会报错

可是既然耗尽了。为什么日志中显示一直有100个连接保持着呢?

对此,老大给出了一条非常重要的信息,C#中,关于连接池的代码中,设定最小值为100。对此我做出的猜想是。是否这100个链接用的是系统的1024个port中的100个?导致timewaitdelay不会涉及到这100个链接呢?尚待考证。

四、改进措施

1.  调整

MaxUserPort = 65534

MaxHashTableSize = 65536 

MaxFreeTcbs = 16000

TcpNumConnections = 16777214

2.  将minpoolsize设为200,进行观察。

2014年06月20号

Mongodb---记一次事故故障的更多相关文章

  1. 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查)

    原贴如下 坑爹坑娘坑祖宗的87端口(记一次tomcat故障排查) 虽然我用的是PHPstudy部署的dedecms,还是一样栽倒这个坑里了. 总结经验:本地测试使用8000~9000的端口比较安全.

  2. 解Bug之路-记一次存储故障的排查过程

    解Bug之路-记一次存储故障的排查过程 高可用真是一丝细节都不得马虎.平时跑的好好的系统,在相应硬件出现故障时就会引发出潜在的Bug.偏偏这些故障在应用层的表现稀奇古怪,很难让人联想到是硬件出了问题, ...

  3. mongoDB研究笔记:复制集故障转移机制

    上面的介绍的数据同步(http://www.cnblogs.com/guoyuanwei/p/3293668.html)相当于传统数据库中的备份策略,mongoDB在此基础还有自动故障转移的功能.在复 ...

  4. 记一次ss故障

    本文主要参考: https://github.com/shadowsocks/shadowsocks shadowssocks 分为客户端和服务器端. 我们平时买的服务,使用是要用的是客户端. 如果你 ...

  5. 记一次tomcat故障排查(转)

    1~1024之间的端口号是保留端口,通常是为特定目的预留的.虽然你的问题不是由于保留端口引起的,但是仍然建议你不要随意使用保留端口作为自定义服务的端口,如果你能早早遵循这一规则压根就不会遇到这个问题. ...

  6. 记一次JVM故障排除

    今天,自己开发的事件驱动的java大规模爬虫程序上线了几个新任务后突然异常. 异常: 程序业务异常,经查看CPU利用率满,内存满,一直报OOM,目测有内存泄露.如下图所示,四核16G的内粗,CPU高达 ...

  7. 记一次网络故障——pod间无法通信

    一.背景 集群是二进制部署 部署完成后一起正常,各种资源对象均可正常创建. 部署应用后发现无法跨节点通信,且pod的ip都是172.17.0.0段的 二.排查过程层 查看节点路由,发现docker0网 ...

  8. 记一次故障处理----主机异常关闭后mongodb二进制文件损坏

    今天,在某个演示环境中,我们的产品经历过整个机房断电后,出现了mongodb二进制文件损坏,以下是故障的分析记录过程: 1.在客户处支撑的同事发现整个机房断电再恢复后,3个mongodb复制集中,有1 ...

  9. MongoDB最佳实践中文手册

    背景:查阅了一下MongoDB的相关文档,发现中文文档还是比较少的,工作中需要用到MongoDB,而这本<MongoDB最佳实践>是很好的选择,所以就把这本手册翻译了一下,其中生涩的专业用 ...

随机推荐

  1. 本地mongochef连接其他计算机上的数据库认证失败解决方法

    关闭防火墙或者在信任程序列表添加运行目录下的mongod.exe即可

  2. Django用户认证系统

    一. 认证系统概要 create_user 创建用户 authenticate 验证登录 login 记住用户的登录状态 logout 退出登录 is_authenticated 判断用户是否登录 l ...

  3. PHP配置步骤

    背景: 作为web前端人员,必不可少的会接触到一些服务器端的脚本语言,比如PHP.因为最近在进行相关知识的总结,同时也回顾一下PHP基础知识.这次总结先从PHP的开始说起,即PHP的配置步骤. 什么是 ...

  4. android Activity实现底部滑动弹出窗口及源码下载地址

    在做微信.微博.qq等分享时,一般是点击分享按钮后会从底部弹出滑动窗口,然后选择要分享的社交平台进行分享.今日头条.腾讯新闻等内容App的评论也是从底部滑动弹出输入窗口,进行评论输入的.本篇文章就讲讲 ...

  5. Android 使用MySQL直接访问数据库

    在实际项目中,一般很少直接访问MySQL数据库,一般情况下会通过http请求将数据传送到服务端,然后在服务端连接mysql数据库. 在android 中,会通过使用Jdbc 连接MySQL 服务器 p ...

  6. 03-Servlet 体系结构知识梳理

    一.Servlet体系结构 Java Web应用是基于Servlet规范运行,Servlet顶层类的关联如下图: 从图可看出,Servlet规范基本围绕这几个类运行,其中,与Servlet主动关联的有 ...

  7. (三)Python 学习第三天--GUI桌面项目

    (代码参考了别人的代码,只做学习用途!!!最近因为写论文,好久没有记录,好内疚...今天学习了一个小案例,做一下) 主要使用模块:tkinter 代码如下: from tkinter import * ...

  8. CNN结构:HSV中的饱和度解析

    参考:颜色的前世今生-饱和度 详解,划重点- 关键这个"纯"是指什么? 是指颜色明亮么?明度高的颜色看起来也明亮啊,不一定纯度高啊- 是说颜色鲜艳么?颜色 "不鲜艳&qu ...

  9. Springboot使用JdbcTemplate RowMapper查询,直接返回实体列表

    ManagerRowMapper.java public class ManagerRowMapper implements RowMapper<Manager>{ @Override p ...

  10. ESLint =》tslint.json

    结论:将ESLint提示注意()里面的规则属性在tslint.json中"rules": { } 里设置为false 1.ES6: ESLint提示"Require Ob ...