我是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"
答案 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。
这解决了这个问题。但我仍然认为响应所用的时间很长,而且性能也没有达到可接受的水平。
此外,欢迎以更好的方式解决此问题的任何建议/意见/建议。