一次网站分析与解决的经历,最后结果虽然很简单但是过程比较曲折.记录一下:
今天访问网站首页十分缓慢,页面半天都加载不出来.于是上服务器看看情况,通过top看到load和cpu以及磁盘io都很低,只能祭出神器dstat:
dstat
查看到流量很大,我们使用的是阿里云的ecs服务器,带宽20m左右,可以看到流量已经达到了带宽上限.
 
于是马上想到查看nginx服务器日志,但是日志庞大,绝大部分是jpg,js,css等静态资源,很难实际分析到问题.
接下来去百度搜索,如何查看服务器上的流量分配.很遗憾并没有直接的答案,但是看到一个工具叫iftop,马上apt-get下载之
 

 
iftop工具可以实时的列出网站当前的流量情况,主要以ip分隔.
上方的列表=>表示出流量,<=表示入流量.
底部三行是汇总:
第一列显示累计的出流量(TX),入流量(RX),总共(TOTAL)
第二列显示峰值带宽
最后一列显示平均的统计结果,分别是3s,5s,15s的统计结果,与top命令的load类似吧.
 
iftop
 
 
可以看到存在少数ip正在占用大量的带宽,这种情况可以想象到是正在下载大文件了,但是并不知道是什么文件. 但知道方向事情就好办了,还是通过nginx日志,分析其中的一个大流量ip正在干什么...执行
 
> cat /var/log/nginx/access.log | grep 223.144.191.227 > ~/temp2.log
 
再来看这个时间点有什么可疑的下载.结果发现一个zip包,这个zip包是我们的app的语音包,有50m以上,估计很有可能是它的问题了!
执行
> cat /var/log/nginx/access.log | grep /word_wg_voc.zip |more  部分结果如下:
 
 
 
可以看到是app的语音包下载出了问题: 链接后面的 200 后面的数字代表的是发送的字节数,而这里很多都不一样,说明是下载不完整. 这也是带宽不足造成的后果...
 
知道了问题后就ok了,解决办法是:先临时提高带宽,同时配置cdn(因为cdn配置后需要把app重新发一个版本才能用上,有个几天的延迟,iphone app审核你懂得).
 
顺便打个广告,app叫知米背单词,大家有空可以来学学英语 :) 

iftop与dstat-一次网站故障分析经历的更多相关文章

  1. 记录第n次网站渗透经历

    如标题所示,第x次实战获取webshell的经历是非常美好且需要记录的(毕竟开始写博客了嘛).这能够证明这一路来的学习没有白费,也应用上了该用的知识. 首先怎么说呢,某天去补天看了看漏洞,发现有一个网 ...

  2. Web服务网站故障分析常用的命令

    1.查看TCP连接状态netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn netstat -n | awk ‘/^tcp/ {++S[$NF]}; ...

  3. Linux Web服务器网站故障分析常用的命令

    系统连接状态篇: 1.查看TCP连接状态 netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn netstat -n | awk '/^tcp/ { ...

  4. stack overflow--技术问答网站

    转自:http://baike.baidu.com/link?url=eMR6Pwdk9IkauI5B3nZb2Yo3VUAcK6vQfrMpcSMPWqgH0ngqFkup3Gdr3t_s_yZe_ ...

  5. [原创]经历:asp.net oracle 部署问题以及解决方法

    精简的美丽...... 一.环境    开发环境        win7 64bit         Vs2010        Oracle 11g r2 64bit        <inst ...

  6. 经历:asp.net oracle 部署问题以及解决方法

    原文:[原创]经历:asp.net oracle 部署问题以及解决方法 精简的美丽...... 一.环境    开发环境        win7 64bit         Vs2010       ...

  7. 网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置方法)

    原文链接:http://www.bzfshop.net/article/176.html 网站被攻击是一个永恒不变的话题,网站攻击的方式也是一个永恒不变的老套路.找几百个电脑(肉鸡),控制这些电脑同时 ...

  8. Apache-Tomcat的安装配置

    现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取当然得上Apache的官方网站下载,开源免费,而且带宽也足够. ...

  9. Tomcat安装配置

    Tomcat安装配置 很久没有通过博客对学习所得进行记录了. 现在将使用Tomcat的一些经验和心得写到这里,作为记录和备忘.如果有朋友看到,也请不吝赐教. 1.首先是Tomcat的获取和安装. 获取 ...

随机推荐

  1. 解决EP拒绝访问注册表Global键的的问题

    问题描述   打开EP站点时出现如下Error: Message: An unhandled error has occurred. To view details about this error, ...

  2. python征程3.0(python对象)

    1.python使用对象模型来存储数据.构造任何类型的值都是一个对象.”尽管python被当成一种面向对象的脚本的编程语言“,但你完全能够写出不使用任何类和实例的脚本. python对象都拥有三个特性 ...

  3. 【Nginx 大系】Nginx服务器面面观

    Nginx官方文档中文版 1. 先看看百度百科对Nginx 的解释: nginx_百度百科 2. 下面的博客就是讲 Nginx的安装方法和 具体的配置文件的使用介绍的很详细,可以仔细阅读下 [好]Ng ...

  4. Java子类属性继承父类属性

    public abstract class Parent { String name = "parent"; } public class Son extends Parent{ ...

  5. .net 实体类与json转换(.net自带类库实现)

    注意要点. 1.jsonhelp编写时候添加的引用.System.Runtime.Serialization.Json; 2.实体类需声明为public jsonhelp代码: using Syste ...

  6. 前端工程师如何快速的开发一个微信JSSDK应用

    亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一 ...

  7. 使用javascript和canvas画月半弯

    使用javascript和canvas画月半弯,月半弯好浪漫!浏览器须支持html5 查看效果:http://keleyi.com/a/bjad/8xqdm0r2.htm 以下是代码: <!do ...

  8. [JS]笔记13之Date对象

    -->获取与设置时间的方法-->使用Date对象制作相应的效果 1.设置时间创建一个时间对象 new Date(time); 设置时间 time 从1970年1月1日至几种格式:new D ...

  9. Google C++单元测试框架GoogleTest---GTest的Sample1和编写单元测试的步骤

    如果你还没有搭建gtest框架,可以参考我之前的博客:http://www.cnblogs.com/jycboy/p/6001153.html.. 1.The first sample: sample ...

  10. Android Gson的使用总结

    1.概念 Gson是谷歌发布的一个json解析框架 2.如何获取 github:https://github.com/google/gson android studio使用 compile 'com ...