• 服务器问题 排查思路


    服务器问题 排查思路

    一.尽可能搞清楚问题的前因后果

    1.故障是什么时候发现的?   
    2.故障的表现是什么?无响应?报错?
    3.最后一次对整个平台进行更新的内容是什么(代码、服务器等)
    

    二.当前有谁在,做过什么操作

    1.  w/who   
    2. last
    3. history
    

    三.现在运行的进程有什么

    1. pstree -a              //以树状图显示进程间的关系
    2. ps -aux
    3. netstat  -n -o -a |grep 443 |wc -l     查看各端口连接数 
       netstat  -n -o -a |grep 80 |wc -l
    4.netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'     查看http的进程数
    

    四.监听的网络服务

    1.  netstat -nalp     
    2.netstat -ntlp
    3.netstat -nulp
      -n或--numeric 直接使用IP地址,而不通过域名服务器。
      -a或--all 显示所有连线中的Socket。
      -l或--listening 显示监控中的服务器的Socket。
      -p或--programs 显示正在使用Socket的程序识别码和程序名称。
      -t或--tcp 显示TCP传输协议的连线状况。
      -u或--udp 显示UDP传输协议的连线状况。
    

    五. 内存 CPU 磁盘空间
    1.内存
    (1) free -m

    第一行 :    内存总数   已使用内存数   空闲内存数  废弃内存数   缓存内存数     缓存内存数
    第二行:    
    - buffers/cache:  已使用内存数 (指的第一行中的used – buffers – cached)
    + buffers/cache:  空闲内存数(指的第一行中的free + buffers + cached)       
    第三行: 指交换分区
    Linux的Swap类似于Windows的虚拟内存,就是把一部分硬盘空间虚拟成内存使用,用来解决内存容量不足的问题。如果有使用到Swap,说明服务器该升级配置了。
    

    2.CPU
    (1)uptime
    

    系统时间  系统运行时间  已登录用户的数量  系统的平均负载量:  过去一分钟  五分钟 十五分钟
     注:有一种说法,当load avarage <3 系统良好,大于5 则有严重的性能问题
    
    (2)top
    

    第一行同uptime
    
    第二行为进程的信息
    总进程数  正在运行的进程数   睡眠进程数    停止进程数   僵尸进程数
    
    第三行为CPU信息   
    us: 用户空间占用CPU百分比       
    sy  内核空间占用CPU百分比
    ni  用户进程空间内改变过优先级的进程占用CPU百分比
    id  空闲CPU百分比           //比较重要
    wa  等待输入输出的CPU时间百分比       
    
    第四、五行为内存信息 
    
    Mem  :  8169876  k  total  ,  7686472  k  used  ,  483404  k  free  ,  35272  k  buffers
    物理内存总量       使用的物理内存总量    空闲内存总量         用作内核缓存的内存量
    
    Swap  :  4096532  k  total  ,  160  k  used  ,  4096372  k  free  ,  2477532  k  cached
    交换分区总量        使用的交换区总量       空闲交换区总量      缓冲的交换区总量
    
    
    
    3.磁盘空间
     (1) df   -h       显示目前在Linux系统上的文件系统的磁盘使用情况统计
    

    文件系统的名称   总内存   使用中的内存   可使用的内存    使用的内存占总内存的百分比  挂载点
    
     (2) du  -sh   *     查看当前文件夹下所有目录大小
    

    六.io性能

    1.iotop         
    

    ​ 读取速度 写入速度

    2. dstat --top-mem --top-io --top-cpu           查看当前占用内存、io、CPU最高的进程信息
    

    一、解决500错误:
    1、500错误指的是服务器内部错误,也就是服务器遇到意外情况,而无法履行请求。
    2、500错误一般有几种情况:
    (1)web脚本错误,如php语法错误,lua语法错误等。
    (2)访问量大的时候,由于系统资源限制,而不能打开过多的文件
    3、一般分析思路:
    (1)查看nginx error log ,查看php error log
    (2)如果是too many open files,修改nginx的worker_rlimit_nofile参数,使用ulimit查看系统打开文件限制,修改/etc/security/limits.conf
    (3)如果是脚本的问题,则需要修复脚本错误,并优化代码
    (4)各种优化都做好,还是出现too many open files,那就要考虑做负载均衡,把流量分散到不同服务器上去了
    
    二、解决502,504错误
    1、使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504。
    2、502 是指请求的php-fpm已经执行,但是由于某种原因而没有执行完毕,最终导致php-fpm进程终止。
    一般来说,与php-fpm.conf的设置有关,也与php的执行程序性能有关,网站的访问量大,而php-cgi的进程数偏少。针对这种情况的502错误,只需增加php-cgi的进程数。
    具体就是修改/usr/local/php/etc/php-fpm.conf文件,将其中的max_children值适当增加。
    这个数据要依据你的VPS或独立服务器的配置进行设置。一般一个php-cgi进程占20M内存,你可以自己计算下,适量增多。
    /etc/init.d/php-fpm restart 然后重启一下.
    3、504 表示超时,也就是客户端所发出的请求没有到达网关,请求没有到可以执行的php-fpm。与nginx.conf的配置也有关系。
    
  • 相关阅读:
    107. 二叉树的层次遍历 II
    106. 从中序与后序遍历序列构造二叉树
    105. 从前序与中序遍历序列构造二叉树
    【Python基础编程029 ● 判断语句和循环语句 ● while循环嵌套 】
    【Python基础编程028 ● 判断语句和循环语句 ● continue的用法 】
    【Python基础编程027 ● 判断语句和循环语句 ● break的用法 】
    【Python基础编程026 ● 判断语句和循环语句 ● 使用while语句求累加和 】
    【Python基础编程025 ● 判断语句和循环语句 ● while循环语句 】
    【Python基础编程024 ● 判断语句和循环语句 ● 使用if语句实现三目运算符】
    登录页面二次跳转的案例
  • 原文地址:https://www.cnblogs.com/gongjingyun123--/p/12606574.html
Copyright © 2020-2023  润新知