加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

nginx+fastdfs-502异常解决方案

(2020-04-16 11:40:14)
分类: 服务器
nginx+fastdfs- 502异常解决方案
1.防火墙规则问题,重启防火墙或者端口没有开启。

2.监控连接是不是满了。
输入df -h

3.磁盘或者内存情况是不是满了。
输入top看看内存是否溢出

4.防火墙策略问题只要输入下面的命令即可
setsebool -P httpd_can_network_connect 1

5.设置nginx超时时间
 proxy_connect_timeout 300s;
 proxy_send_timeout 300s;
 proxy_read_timeout 300s;
问题终极排查:
使用fastdfs加两台storage,一台做备份使用时,发现有一类文件名是以“ag-”开头,使用nginx+fastdfs-502异常解决方案标签即时显示的时候会报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服务器了。


————————————————

 3.解决报错

        make的时候会报一下错误,

        root/fastdfs-nginx-module/src//common.c:21:25: fatal error: fdfs_define.h: No such file or directory

 #include "fdfs_define.h"

                        ^

compilation terminated.

make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] Error 1

解决办法:

  vim /root/fastdfs-nginx-module/src/config

 

 CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

 CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"

 重新编译,安装即可

-------------------------------



[root@fastdfs-storage ~]# vim /application/nginx/conf/nginx.conf
    user  root;    
    worker_processes  1;
    events {
       worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8888;
            server_name  localhost;
            location ~/group[0-9]/ {
                ngx_fastdfs_module;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
            }
        }
    }
说明: 

a、"user root"是解决下载操作时报404的问题

b、8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应

c、storage对应有多个group的情况下,访问路径带group名称,例如:/group1/M00/00/00/**,对应nginx配置:

    location ~/group[0-9]/ {
           ngx_fastdfs_module;
     }


————————————————
启动方式以及配置和nginx一样的端口
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/logo.png
 
 
 /etc/init.d/fdfs_trackerd start
 /etc/init.d/fdfs_trackerd stop
 
  ln -s /home/fastdfs/storage/data/ /home/fastdfs/storage/data/M00
 
 
  /etc/init.d/fdfs_storaged start
  
   /etc/init.d/fdfs_storaged stop


vim /etc/fdfs/storage.conf

http.server_port=8888


 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有