zoukankan      html  css  js  c++  java
  • 线上502故障分析

    某一天看见线上502突然陡增,然后就就开始了几天的故障发现之旅。

    一、刚开始怀疑是不是负载均衡和后端的服务器之间的tcp连接超时,导致服务器断开了tcp连接。

    后通过tcpdump抓包分析取消了这个怀疑。

    1 tcpdump -i eth0 host 1.1.1.1 and tcp port 80 -w  /tmp/4.pca

    用户明确将post请求上传到服务器了,然后服务才开始tcp fin结束tcp连接,所以服务器已经执行了该请求,但是由于某种原因执行失败了。

    二、打开apache的错误日志分析一下哟

    1 在apache主配置文件中
    2 vim ./conf/httpd.conf
    3 ErrorLog "logs/error_log"

    根据这个日志毛毛球都发现不了,然后我们打开apache的coredump

    2.1)首先要开启核心转储

    1)查看core文件是否打开:
    ulimit -c  # 如果为 0 表示coredump开关处于关闭状态
    
    2)打开core文件生成: 
    ulimit -c 1024         # 1024个blocks,一般1block=512bytes
    ulimit -c unlimited    # 取消大小限制
    
    3)检查core文件的选项是否打开:
    ulimit -a  # 显示当前所有limit信息
    
    永久更改这种操作不适合老夫,所以我就不写了。

    2.2)core文件的存储位置和文件名:

    1、临时修改
    1)core文件保存在/var/apache_dump目录下
    echo "/var/apache_dump/%e.core.%s.%p.%h.%t" > /proc/sys/kernel/core_pattern
    2)生成的core文件名将会变成core.pid
    echo 1 > /proc/sys/kernel/core_uses_pid
    
    2、永久修改 
    1)在配置最后增加2行
    cat /etc/sysctl.conf
    kernel.core_pattern = /var/apache_dump/%e.core.%s.%p.%h.%t
    kernel.core_uses_pid = 1
    2)永久生效
    sysctl -p

    2.3)创建core文件存储位置并且为授权,修改apache

    mkdir -p /var/apache_dump
    chow www.www /var/apache_dump
    
    在apache主配置文件中,最底下一行新增
    vim conf/httpd.conf
    CoreDumpDirectory /var/apache_dump

    2.4)重启生效,切记一定要先stop,然后在start,否则不生效,具体为啥不生效,研究一下?

    2.5)此时的apapche的错误日志就变成了如下(文件名跟我上面不一样不要介意,过了几天才写的博客):

    三、接下来就开始分析coredump文件

    这个文件也是异常的傻逼,需要安装gdb,debug-info等等,可以自己研究一下,这个httpd一定要注意,要不然都是坑。

    gdb /httpd/bin/httpd httpd.core.7.12107.hostname.1583911530

    看见这个时候整个人都蒙了,这他妈毛毛球都看不出来啊,然后去研究了一下gdb的用法,发现有个叫bt full的命令,详细展示。

    然后往下翻,慢慢找,太多了,找了一会找到了代码相关的信息,然后线上测试一下,确认问题,问题解决,舒服了。

    参考的各位大佬:

    https://blog.51cto.com/7938217/1671716
    https://cwiki.apache.org/confluence/display/HTTPD/CoreDump
    https://www.cnblogs.com/dongzhiquan/archive/2012/01/20/2328355.html
    https://www.cnblogs.com/chenpingzhao/archive/2016/06/06/5563605.html
    https://www.cnblogs.com/Robotke1/archive/2013/04/23/3039108.html
    https://blog.csdn.net/lcli2009/article/details/84027059
    https://httpd.apache.org/dev/debugging.html
    https://blog.csdn.net/f_srion/article/details/69967781
    https://bugs.php.net/bug.php?id=73588&thanks=6
    https://bugs.php.net/bugs-generating-backtrace.php
  • 相关阅读:
    jquery流行的插件收集
    简单遮罩层
    生成任意位数随机验证码
    30个图片浏览插件收集
    [转载]12个jQuery Lightbox效果插件
    jqzoom图片放大镜效果
    23个超流行的jQuery相册插件收集
    在suse上创建UDEV Rules For RAC OCR And Voting Devices
    /etc/fstab文件中的一些参数
    Oracle提供的自治事务记录日志的方法
  • 原文地址:https://www.cnblogs.com/bill2014/p/12467730.html
Copyright © 2011-2022 走看看