专栏首页技术小牛HTTP状态码502与504的区别及解决思路

HTTP状态码502与504的区别及解决思路

HTTP响应返回502与504意味着什么?

首先得搞清楚502错误和504错误的区别,以我比较熟悉的PHP为例,502是PHP-FPM(PHP的进程管理器没办法从进程池里找到可分配的进程来处理请求了,就会返回502错误,本质上是PHP进程状态异常—进程不够用了或者PHP服务根本就没开启),这种情况下应该检查PHP服务是否启动了,如果启动了,就要看一下是不是进程池太小,已经全部处于繁忙状态,这种情况下通常将PHP的可用进程数提高数提高就能解决问题;而504错误是网关超时,它代表负责处理HTTP请求的PHP进程超过了约定的最长时间仍未返回处理结果,出现这种异常的原因通常是sql执行的时间太长或代码里出现了死循环之类的问题。

遇到502怎么办?

好了,下面说一下遇到502错误时怎样判断PHP进程数是否够用,办法是很简单的,思路就是看一下目前开启了多少个PHP-CGI进程,再看一下目前非空闲状态的PHP-CGI进程,如果这两个数是接近的,就意味着当出现新请求时,容易引起502错误,需要将前面开启的PHP-CGI进程数增加。 命令如下: 1.查看服务器上一共开了多少的 php-cgi 进程

ps -fe |grep "php-fpm"|grep "pool"|wc -l

2.目前有多少个php-cgi进程在处理tcp请求

netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l

在内存容量充足的情况下,这两个数应该拉开一定的差距,如果差距很小,则在有多个新请求过来时,容易出现502错误。

遇到504怎么办?

上面说了,504意味着执行代码超时了,所以最直接的办法是先去看一下数据库的慢日志(slow log),看最新的数据库慢日志记录,如果就是刚刚发生的,并且执行的时间长度是特别长,甚至长到与你服务器网关超时的时间相近的,那不要想了,就是这里的问题,把相应的SQL优化好就行了,如果数据库的慢日志里并没有明显异常的情况,那就得考虑是不是代码里有耗时太长的逻辑,或有与外部接口通讯的代码,因为网络延时或对方响应时间太长,而你的异常机制没做好,导致你的代码一直在等待对方响应,间接造成你的代码超时了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 501:502:503:504都是什么原因

    一:500错误 1、500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。

    Java帮帮
  • 一边制造,一边讲解http状态码502|504|499|500

    Status Code 499、500、502、504也是后端Http服务经常返回的状态码,试想一下,对于每个状态码,如果你能通过一些修改或配置来人为复现它,是...

    后端技术探索
  • Nginx实例与localtion匹配规则

    wuweixiang
  • Nginx中的502和504

    Nginx作为一个流行、轻量、高性能、稳定的web服务器,是应用运维日常最常接触的web服务器,更多的时候它是用于web代理服务,今天要说的是日常维护Nginx...

    李俊鹏
  • 聊聊nginx与tomcat的5xx

    本文主要讲述一下nginx与tomcat的502、504、503错误及其常见的产生原因。

    code4it
  • Nginx code 状态码说明

    最近了解下Nginx的Code状态码,在此简单总结下。一个http请求处理流程: ? 一个普通的http请求处理流程,如上图所示: A -> client端发起...

    洗尽了浮华
  • Nginx code 状态码说明

    一个普通的http请求处理流程,如上图所示: A -> client端发起请求给nginx B -> nginx处理后,将请求转发到uwsgi,并等待结果 C ...

    后端技术探索
  • 08 . Nginx状态码

    常见_youmen
  • Nginx技术(附软件分享)

    2、修改每个文件夹内的里面的index.html,使其具有辨识度 3、修改Nginx的配置文件nginx.conf , 根据情况修改server_name...

    时间静止不是简史
  • HTTP状态码及排查思路

    Web防火墙经常遇到各类状态码,客户不知道什么原因。本文根据官方文档,整理出所有HTTP状态码及其含义,以及异常状态码常见的处理办法,提升问题处理效率。

    etanmiao
  • nginx代理网卡_Nginx学完了!!! —Java133天学习

    访问 http://192.168.70.144 将访问“html144”目录下的 html 网页

    Java架构师必看
  • k8s Ingress nginx错误页面的深度定制

    网站运行过程中难免出现问题,为用户抛出一个错误页面,常见的错误页面包含403、404、500、502、503、504状态码,这些常见的错误页面状态码的含义如下

    仙人技术
  • 【前端刷题笔记01】 - 字节跳动2019春招面试题

    CloudCat
  • 003.Nginx配置解析

    Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织,通常每一个区块以一对大括号{}来表示开始与...

    木二
  • 也谈 ngx.ctx 继承问题

    在前一阵子的 OpenResty Con 2018 上,来自又拍云的 @tokers 分享了他们对 ngx.ctx 的 hack,以确保在发生内部跳转后 ngx...

    poslua
  • Nginx认识与实践(二) 转

    =================Nginx反向代理+负载均衡 实现 start===================

    wuweixiang
  • Nginx设置404错误页面跳转

    在server下配置 error_page 以下三种情况都可以起作用, 可以配置在server第一层的任何位置, 不受影响 也可以配置在location里面...

    拓荒者
  • Nginx+upstream针对后端服务器容错的运维笔记

    熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一、nginx的upstr...

    洗尽了浮华
  • nginx 502错误原因和解决办法总结

    一、NGINX 502错误排查 NGINX 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些...

    后端技术探索

扫码关注云+社区

领取腾讯云代金券