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.连接数据库失败而没有停止,死循环重新连。

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

  • 相关阅读:
    cad.net修改视口比例
    cad.net添加和删除图层过滤器
    cad.net创建新图层
    cad.net创建浮动视口
    根据handle转换成ObjectId
    C#类型转换
    过滤选择集
    文字随线移动
    文字打断
    注册表应用示例
  • 原文地址:https://www.cnblogs.com/weiluoyan/p/10439421.html
Copyright © 2011-2022 走看看