zoukankan      html  css  js  c++  java
  • php – 504 Gateway

    最近运营反应客户在导出或者查询数据的时候返回504

    如图:

    第一个反应就是查询语句耗时太长了,所以把同事之前写的sql语句都打印出来,连接线上数据库执行explain操作,一看果然没有用到索引,执行的全表扫描,如图

    而且还使用了临时表,还使用了排序,就是上篇我写的 为什么有了fiilesort就需要优化,然后就跟dba申请加索引,并说明原因。

    除了业务上sql语句查询慢导致的超时,还有就是nginx的设置超时时间可以看一下,如果业务一直在处理,超过了nginx的设置的超时时间就会返回504

    使用locate nginx 或者 ps aux|grep nginx 找到nginx的配置文件如图:

    找到nginx.conf的配置文件后打开

    这三个参数:

    fastcgi_connect_timeout
    fastcgi连接超时时间,默认60秒

    fastcgi_send_timeout
    nginx 进程向 fastcgi 进程发送请求过程的超时时间,默认值60秒

    fastcgi_read_timeout
    fastcgi 进程向 nginx 进程发送输出过程的超时时间,默认值60秒

    这个时间就设置的有点长,因为之前没有优化sql语句的时候修改的,现在sql语句优化完了就需要修改下比如60

    最后分析

    nginx访问出现504 Gateway Time-out,一般是由于程序执行时间过长导致响应超时,例如程序需要执行90秒,而nginx最大响应等待时间为30秒,这样就会出现超时。
     
    通常有以下几种情况导致

    1.程序在处理大量数据,导致等待超时。
    2.程序中调用外部请求,而外部请求响应超时。
    3.连接数据库失败而没有停止,死循环重新连。

    最后成功解决,特写篇记录一下

  • 相关阅读:
    重置 Mac 上的 NVRAM 或 PRAM
    为什么我的mac插入耳机耳机没有声音呢?
    Redis 实现安全队列
    设计模式之十三:适配器模式(Adapter)
    关于cocos2dx手游lua文件加密的解决方式
    Django中载入js和css文件
    CCNA 例题精选
    JNI/NDK开发指南(四)——字符串处理
    error when loading the sdk 发现了元素 d:skin 开头无效内容
    Webx学习(一)
  • 原文地址:https://www.cnblogs.com/weiluoyan/p/10439421.html
Copyright © 2011-2022 走看看