上游超时(110:连接超时),同时从上游读取响应头

时间:2018-05-05 13:19:36

标签: php amazon-web-services nginx laravel-5.1 amazon-elb

我是nginx服务器的新手。我目前面临的问题是从iOS应用程序拨打电话后连接超时问题。 Json我收到的是巨大的,因此服务器上记录了超时。

同时检查了stackoverflow上发布的各种答案。但是没有帮助我。

以下是我的访问日志和错误日志。请帮忙。

错误日志

public interface IValetKeyResponse
{
    IStorageEntitySas Sas { get; set; }
    string UploadUrl { get; set; }
}

public class ValetKeyResponse : IValetKeyResponse
{
    //Which OOP, principle is violating here? StorageEntitySas is essentially of type IStorageEntitySas
    **public StorageEntitySas Sas { get; set; }**
    public string UploadUrl { get; set; }
}

public class StorageEntitySas : IStorageEntitySas
{
    public string Credentials { get; set; }
    public Uri BlobUri { get; set; }
    public string Name { get; set; }
}

访问日志

upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxxxxxxxx, server: xxxxxxxxxxx, request: "POST /api/event/gallery HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock", host: "xxxxxxxxxxx"

nginx.conf

"POST /api/event/gallery HTTP/1.1" 504 192 "-" "mysite/2 CFNetwork/889.9 Darwin/16.7.0"

1 个答案:

答案 0 :(得分:0)

<强>更新

当我查看此问题时,我在\ etc \ php \ 7.0 \ fpm \ pool.d \ www.conf中增加了时间设置 - request_terminate_timeout,并遇到了HTTP状态代码499。 访问日志

"POST /api/event/gallery HTTP/1.1" 499 0 "-" "mysite/2 CFNetwork/889.9 Darwin/16.7.0"

所以我开始研究这个问题并发现有适当的负载均衡器(AWS ELB),它有一个默认为60秒的超时设置。推荐https://www.cadence-labs.com/2017/07/fix-nginx-timeout-499-client-closed-request/

在那里增加超时(ELB)后,我设法在postman中获得结果。但事实证明这种情况非常不稳定。这意味着我会在4-5次尝试中得到一次回应。

所以我设法添加了一些设置 等\ nginx的\网站可用\ DEFAULT 在每个服务器和位置块中添加了以下设置。

fastcgi_read_timeout 540;
proxy_connect_timeout 3000s;
proxy_send_timeout   3000;
proxy_read_timeout   3000;

并重新启动nginx。

这解决了这个问题。但我仍然认为响应所用的时间很长,而且性能也没有达到可接受的水平。

此外,欢迎以更好的方式解决此问题的任何建议/意见/建议。