服务器问题 排查思路

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

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的配置也有关系。
posted on 2020-03-31 17:18  gong^_^  阅读(609)  评论(0编辑  收藏  举报