V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xustrive
V2EX  ›  服务器

今天被面试官问到一个问题,网站变卡了怎么去排查原因。~忘大神给意见。

  •  
  •   xustrive · 2017-12-20 19:52:48 +08:00 · 7275 次点击
    这是一个创建于 2528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天面试被问到了这个问题,想听听大家的想法。 首先我先说说我的回答:

    网站变卡了,首先从网络端开始查询是否受到了 DD 的攻击.使用 nmon 工具查看当前的网卡网络流量信息。首先判断是否有被 DD 攻击。 如果流量正常则查看一下网络连接状态使用(netstat -ano) 查看是否有明显的大量连接数。来判断是否受到了 CC 攻击。(我理解的是 DD 就是发大量的数据包来把你的带宽占满,CC 攻击就是不停访问你大量占用 CPU 或者数据库查询的页面将服务器拖垮,如有误忘指正)

    如果流量不是很大的话,连接数也不是很多的话,使用 Top 命令查看是否有 CPU 占用高的进程 ,比如说如果 Tomcat or nginx or Mysql 是否占用了很大的 CPU,查看是否有程序的死循环导致的 CPU 跑满. 查看当前 IO 是否很高,是否有大量的查询数据库。 (这里有问到如何去查询 IO 是否很高,我回答也是使用 nmon 的 d 菜单去看,不过似乎这个并不能精确到进程,忘大神指教)

    还有就是用 free -m 查看当前内存占用率是多少,是不是程序有内存泄漏导致内存满了溢出?这样拖慢程序? (这个我没讲,有点小紧张忘了)

    其中很多操作都是需要精确到命令。。我感觉我平时遇到这种问题都是土法子搞,因为毕竟不是大型生产环境直接重启服务或者 kill 掉了,我知道这个习惯不好,所以要改。

    PS 题外话: 如果受到了攻击该怎么样?关服务器么。。。 另外如果受到了 CC 攻击导致 CPU 边高应该怎么办。。

    抛砖,忘大神给出一二点建议和授予一点知识,若同在深圳我请你吃好吃的呀(一枚吃货的第一反映)。Orz

    14 条回复    2017-12-21 10:17:24 +08:00
    zhjits
        1
    zhjits  
       2017-12-20 20:01:16 +08:00   ❤️ 1
    网站变卡了当然先打开开发者工具的 timeline 看一下具体是哪个请求卡了呀(
    taojing10
        2
    taojing10  
       2017-12-20 20:25:51 +08:00 via Android
    Chrome 调试下就看得出呀
    xustrive
        3
    xustrive  
    OP
       2017-12-20 20:31:56 +08:00
    @taojing10
    @zhjits

    找到了,现在改名叫 performance 我点那个录像一样的按钮 就会走一个 Buffer 的进度条,应该就是用这个吧?
    xustrive
        4
    xustrive  
    OP
       2017-12-20 20:33:01 +08:00
    @zhjits
    @taojing10
    怪不得今天那个面试官最后问我 你会不会用那个 F12 的工具。。 我 还很天真的讲 会啊,一般我会用那个来查看一些 URL 错误 出现红 XX 的地址修复。。。
    flynaj
        5
    flynaj  
       2017-12-20 20:44:54 +08:00 via Android
    先看网络,在看服务器,
    bk201
        6
    bk201  
       2017-12-20 20:47:23 +08:00 via iPhone
    排查个人以为是从源头一直扩展开来谈,结果你只是列举了有哪些情况.
    yimity
        7
    yimity  
       2017-12-20 20:59:01 +08:00
    先看哪里变卡了。
    xustrive
        8
    xustrive  
    OP
       2017-12-20 21:18:53 +08:00
    @bk201 能给点思路么。0.0
    dltsgl
        9
    dltsgl  
       2017-12-20 21:36:35 +08:00
    忘->望
    xustrive
        10
    xustrive  
    OP
       2017-12-20 22:03:35 +08:00
    @dltsgl 我这打得有点急... 下次检查
    corvofeng
        11
    corvofeng  
       2017-12-20 22:15:08 +08:00 via Android
    其实我也被游戏公司问过这个问题, 我是这么答的, 有不合适的也请指正:

    先看看是不是用户的网络有问题, 网速不够什么的。

    再看看机房是不是被攻击, 就是别人被攻击也有可能发生机房网络的抖动, 会造成某一时刻时延很大。

    然后再看服务器的负载, 看看是不是需要加资源了。

    再看看是不是数据库访问慢, 是不是要优化下数据库查询。

    如果还解决不了, 最后再看看是哪些函数消耗性能比较多, 测量一下程序性能, 针对性的优化。

    实在不行, 就只能看程序架构了。
    zhjits
        12
    zhjits  
       2017-12-20 22:19:58 +08:00
    @xustrive 那个是 JS 运行性能……你要看 network tab
    yingfengi
        13
    yingfengi  
       2017-12-20 23:52:08 +08:00
    进出口防火墙看一下
    第一反应。。。
    系统集成路过
    whx20202
        14
    whx20202  
       2017-12-21 10:17:24 +08:00
    先看看系统占用啊,比如 top 里面看看 cpu load avg
    free -mh
    iostat -xmd 1
    sar -n DEV 2
    等等

    你说的 IO 精确到进程可以 iotop

    然后一般变卡,也有不少,都是业务上
    这时候看日志,看数据库等等,肯定能看出来,大不了上 profile

    还有的很多是底层的 Linux 相关的,我遇到过,但是不会,比如 dentry 什么的出了问题, 这时候要查资料或者求助同事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:30 · PVG 08:30 · LAX 16:30 · JFK 19:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.