nginx+fastdfs 502异常解决
使用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异常解决相关推荐
- linux环境手动编译安装Nginx实践过程 附异常解决
linux环境手动编译安装Nginx实践过程 附异常解决 参考文章: (1)linux环境手动编译安装Nginx实践过程 附异常解决 (2)https://www.cnblogs.com/david9 ...
- Nginx 502的解决方法
常见的Nginx 502 Bad Gateway解决办法如下: Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数 ...
- nginx常见502错误提示原因和解决方法
Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...
- nginx常见502错误的解决方法
Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...
- Nginx+Fastdfs
注: 在配置时,使用非root用户配置 fdfs/fdfs 1. 集群部署 1.1. 准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs@5861be93b5b0 /]$mk ...
- WAF(NGINX)中502和504的区别
0x00 前言 华为云WAF使用最好的服务器和带宽为客户提供反向代理和安全检测服务,但是在使用过程中,个别用户的请求出现了502或者504.因此我们团队也经常受到用户的反馈,这里可以大致和大家澄清一下 ...
- nginx反向代理配置解决不同域名默认页面不同问题
nginx反向代理配置解决不同域名默认页面不同问题 背景 设计思路 步骤 背景 需求:使用同一个项目(http://localhost:8080/thzhdj)映射两个域名(test1.com,tes ...
- 【Linux】详解linux中 Nginx 常见502错误问题解决办法
Nginx 502错误情况1: 网站的访问量大,而php-cgi的进程数偏少. 针对这种情况的502错误,只需增加php-cgi的进程数.具体就是修改/usr/local/php/etc/php-fp ...
- ftp ftpclient异常解决、远程命令已经错误代码
ftp ftpclient异常解决.远程命令已经错误代码 目录(?)[+] 1.FTP异常以及解决办法 1 sun.net.ftp.FtpProtocolException: PORT :501 PO ...
- [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 ...
最新文章
- linux poll in,Linux poll机制详细讲解
- Git_git的诞生
- 自定义hive url parse函数
- dbgrideh的功能
- http 二进制_浅谈HTTP协议
- 四、MyBatis 框架 Dao 动态代理
- 这个副业清单,总有一个适合你!
- Python机器学习:线型回归法06最好的衡量线型回归法的指标RSquared
- 分享一个selenium jar包 的下载地址,各版本都有,包括selenium-server-standalone.jar、selenium、selenium-server
- KNN(二)--近似最近邻算法ANN
- LINUX使用wireshark
- 10个Android开发必看的GitHub开源项目
- kaggle入门--泰坦尼克号之灾(手把手教你)
- 厉害了,分布式数据库中间件ShardingSphere毕业成为Apache顶级项目!
- 2014图灵奖--迈克尔·斯通布雷克简介
- DNS安全 DNS缓存投毒与防护
- 谷歌验证码recaptcha接入
- 【OBS】dll库加载路径中文问题
- 1047: 奇数的乘积
- 路由器与三层交换机有啥区别?