0
点赞
收藏
分享

微信扫一扫

Nginx的故障收集、定位、处理

​1、首先检查自身nginx服务是否开启,再检查服务是否可以正常开启、如果服务宕掉,就重启服务。

2、配置文件都没出错,可是无法正常访问,都调到一个默认页面

原因:可能本机存在两个nginx

处理:查看本机是否只有唯一nginx,注意查看nginx的主进程号

3、出现502 gat way 、504timeout

5xxx的代码表示服务器出现的错误

处理:①502报错和fpm-php.conf 的配置文件有关系,进去仔细查看配置文件是否出错

②504报错和nginx.conf配置文件有关系,比如修改缓存时间,大小等,还有一个fastcgi_read_timeout选项,次选项时设置在时间段内,不论php-cgi请求是否完成,都会关闭,还要注意一下web站点的php最大请求时间为多少,如果设置少了也会报504的错误。

4、403未授权被禁止访问报错、413上传文件大报错

4xx代码,通常来说表示客户端类的错误

原因:①403是nginx程序用户无权限访问web目录文件、nginx需要访问目录,但是autoindex选项被关闭②413是因为上传文件的大小已经超过了nginx所配置的大小

处理:①403 授予nginx程序用户权限读取web目录、设置autoindex目录为on

②在nginx.conf增加client_max_body_size设置,默认值为1M,可以增加到8M提高文大小限制、如果运行的是php,那么还要检查php.ini,这个大小的size要和php.ini中的值大小相同,这样提交数据时就不会出现错误


4、301为永久重定向、302为临时重定向、304表示冲缓存中响应,

出现3xx的代码,通常为重定向类状态码​,如果访问某域名时,出现跳转问题,那么就要检查nginx的配置,

①查看rewrite规则是否合理

②location是否出现优先级问题

Nginx的故障收集、定位、处理_php

定位:

正常报错,首先查看nginx的报错日志

50x的错误都是服务端错误,​一定不要到nginx的日志中去查​:(1) 去框架的异常日志中去找(如果异常被catch住了);(2) 到php的error_log中去找


5、服务器负载过高告警,网页打开变慢

原理、定位:①登录服务器,使用top命令查看cpu的io,查看是否负载过高

②使用iotop -o查看nginx的写io是否特别大,如果nginx的io特别大并且在top时查看到nginx的进程状态为D,那么表示nginx的等待io已经为僵死状态

③已知nginx进行大量的写操作导致系统负载过高,还要继续查出具体的nginx在写什么文件导致压力过高,进行查询nginx worker进程pid,使用lsof -p pid;列出系统文件及日志文件,如果有fastcgi_temp/xxxxxx文件,那么可能是这些文件导致的负载过高

④使用strace -p pid;(​此命令是跟踪pid进程的系统调用​)追踪,发现nginx进程对某个fd进行大量的写操作,与lsof命令累出来的文件正好一致,使用iostat 1输出的大量写io的分区也与fastcgi_temp所在分区相符合

⑤也有可能是外部大量上传大文件给fpm-php,这时就需要使用小公举来查看实时流量(​EZHTTP小工具​)

处理:把fastcgi_temp指向/dev/shm,(​/dev/shm 目录不在内存里,直接映射在内存里​)然后重启nginx(​还有问题就找开发!!

举报

相关推荐

0 条评论