使用fastdfs加两台storage,一台做备份使用时,发现有一类文件名是以“ag-”开头,使用<img>标签即时显示的时候会报502异常,

查看nginx的error.log得到

2017/09/25 17:39:09 [error] 13333#0: *30734 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 10.24.169.19, server: localhost, request: "GET /group1/M00/01/5E/ag-JjlnIzqmAdi3UAAOreY6LKcM688.jpg HTTP/1.1", upstream: "http://106.15.137.142:8081/group1/M00/01/5E/ag-JjlnIzqmAdi3UAAOreY6LKcM688.jpg?redirect=1", host: "10.135.237.203:8081"

分析一下客户端与nginx的交互过程如下:

一般Nginx与Tracker装在一台服务器上,所以他们之间的通信一般不会时间太长而导致超时

但是Nginx与Storage一般不再一台机器上,因此Nginx与Storage之间的通信可能会timeout,从而导致502异常。

所以需要在Nginx中添加如下配置

location /group1/M00{
                        add_header Content-Disposition "attachment;filename=$arg_n";
                        add_header Access-Control-Allow-Origin "*";
                        root /home/ubuntu/fastdfs/nginx-link/data;
                        ngx_fastdfs_module;
                        proxy_connect_timeout 300s;
                        proxy_send_timeout 300s;
                        proxy_read_timeout 300s;
                }

后来发现,还是解决不了这个问题,继续分析发现另外一台的Storage上的文件是访问不了的,检查一看nginx_fastdfs_module没有配置,添加上去后,重启nginx,发现502的异常解决了但是偶尔会出现插入的图片需要很长时间才能显示出来。

讲过一番思考后,发现这是Storage同步延迟的结果,大概是这样的Tracker将文件放在StorageA上,但是访问的时候,Tracker发现StorageB也是可用的,就返回了StorageB的IP与端口。但是此时StorageB还没有此文件,所以一直等待,直到StorageB同步StorageA的数据。

查看Tracker的配置文件有如下配置:

# which storage server to download file
# 0: round robin (default)
# 1: the source storage server which the current file uploaded to
download_server=1

意思是选择哪一个Storage 服务器去下载文件0代表轮询,为默认值,1代表从当前文件的源文件服务器上下载文件

此时设为1,就好了。

那么Tracker是怎么判断哪一台是源务器的呢?是根据文件名,Tracker_Nginx_Module可以根据文件名反解出源服务器IP,文件时间戳,根据这两点就可以找到源Storage服务器了。

参考:1.http://www.bubuko.com/infodetail-1873115.html

2.http://blog.csdn.net/mr_smile2014/article/details/52118541

nginx+fastdfs 502异常解决相关推荐

  1. linux环境手动编译安装Nginx实践过程 附异常解决

    linux环境手动编译安装Nginx实践过程 附异常解决 参考文章: (1)linux环境手动编译安装Nginx实践过程 附异常解决 (2)https://www.cnblogs.com/david9 ...

  2. Nginx 502的解决方法

    常见的Nginx 502 Bad Gateway解决办法如下: Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数 ...

  3. nginx常见502错误提示原因和解决方法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

  4. nginx常见502错误的解决方法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

  5. Nginx+Fastdfs

    注: 在配置时,使用非root用户配置 fdfs/fdfs 1.    集群部署 1.1.    准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs@5861be93b5b0 /]$mk ...

  6. WAF(NGINX)中502和504的区别

    0x00 前言 华为云WAF使用最好的服务器和带宽为客户提供反向代理和安全检测服务,但是在使用过程中,个别用户的请求出现了502或者504.因此我们团队也经常受到用户的反馈,这里可以大致和大家澄清一下 ...

  7. nginx反向代理配置解决不同域名默认页面不同问题

    nginx反向代理配置解决不同域名默认页面不同问题 背景 设计思路 步骤 背景 需求:使用同一个项目(http://localhost:8080/thzhdj)映射两个域名(test1.com,tes ...

  8. 【Linux】详解linux中 Nginx 常见502错误问题解决办法

    Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...

  9. ftp ftpclient异常解决、远程命令已经错误代码

    ftp ftpclient异常解决.远程命令已经错误代码 目录(?)[+] 1.FTP异常以及解决办法 1 sun.net.ftp.FtpProtocolException: PORT :501 PO ...

  10. [temp]Nginx 错误502 upstream sent too big header while reading response header from upstream

    Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止. Nginx 504 Gateway ...

最新文章

  1. linux poll in,Linux poll机制详细讲解
  2. Git_git的诞生
  3. 自定义hive url parse函数
  4. dbgrideh的功能
  5. http 二进制_浅谈HTTP协议
  6. 四、MyBatis 框架 Dao 动态代理
  7. 这个副业清单,总有一个适合你!
  8. Python机器学习:线型回归法06最好的衡量线型回归法的指标RSquared
  9. 分享一个selenium jar包 的下载地址,各版本都有,包括selenium-server-standalone.jar、selenium、selenium-server
  10. KNN(二)--近似最近邻算法ANN
  11. LINUX使用wireshark
  12. 10个Android开发必看的GitHub开源项目
  13. kaggle入门--泰坦尼克号之灾(手把手教你)
  14. 厉害了,分布式数据库中间件ShardingSphere毕业成为Apache顶级项目!
  15. 2014图灵奖--迈克尔·斯通布雷克简介
  16. DNS安全 DNS缓存投毒与防护
  17. 谷歌验证码recaptcha接入
  18. 【OBS】dll库加载路径中文问题
  19. 1047: 奇数的乘积
  20. 路由器与三层交换机有啥区别?

热门文章

  1. 蜜桃为什么显示服务器不可用,蜜桃直播 服务器地址
  2. JPA-Specification 实现复杂查询
  3. 基于科大讯飞AIUI平台自定义语义库的开发
  4. 统一社会信用代码的校验
  5. 【Postman】使用Tests进行环境变量设置
  6. Python 数据处理与分析(五) 设计一个高回报的投资组合(投资回报和风险分析)任务 4:马科维茨的均值-方差组合模型
  7. Prometheus(监控报警系统) 的学习笔记
  8. oracle 10015 trace name adjust_scn level level_num
  9. 大数据处理的四大步骤
  10. BMZCTF Ook