免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2934 | 回复: 1
打印 上一主题 下一主题

[服务应用] 求教Nginx反向代理服务器(带缓存)问题 [复制链接]

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-22 14:05 |只看该作者 |倒序浏览
环境如下:
     主机A:使用Nginx搭建的文件服务器,有些文件很大,有100G。
     主机B:使用Nginx搭建的反向代理服务器,带缓存,源指向主机A。同时作为下载client,使用curl命令下载文件。

假设缓存文件已经存在,这样数据拷贝只是主机B-->主机B。

问题如下:
     当主机B使用curl从本地下载100G大小的文件时,下了几个G就停止了,报错(curl 10G以内的文件一般不会报错):
           curl: (1 transfer closed with 103333150720 bytes remaining to read。
     这个时候主机B的Nginx配置文件中sendfile=on,tcp_nopush=on,tcp_nodelay=on。
     当关闭了sendfile时(sendfile=off),再次从主机B curl 100G的文件,98%是成功的。
     但是当有并发时(一次curl 10个100G的文件),当一个nginx进程处理两个以上curl请求时,只有一个curl请求可以正常下载,同一进程处理的其他curl请求会出现上述问题。

请论坛中高手帮忙分析一下,先谢过!

我的配置文件如下,主机A的就不贴了(正常配置):
sendfile打开时:
nginx.conf:
  1. worker_processes  8;

  2. error_log  logs/error.log;
  3. error_log  logs/error.log  notice;
  4. error_log  logs/error.log  info;

  5. #pid        logs/nginx.pid;


  6. events {
  7.     use epoll;
  8.     worker_connections  1024;
  9. }


  10. http {
  11.     include       mime.types;
  12.     include          proxy.conf;
  13.     include           mysvrhost.conf;
  14.     default_type  application/octet-stream;

  15.     sendfile        on;

  16.     server_names_hash_bucket_size 128; #增加
  17.     client_header_buffer_size 32k; #增加
  18.     large_client_header_buffers 4 32k; #增加
  19.     client_max_body_size 300g; #增加
  20.     tcp_nopush on; #修改为on
  21.     keepalive_timeout 35; #修改为65
  22.     tcp_nodelay on; #增加
  23.     server_tokens off; #增加,不显示nginx版本信息

  24.     server {
  25.         listen       8023;
  26.         server_name  localhost;

  27.         location /{
  28.                 proxy_pass http://mynginx;
  29.                 proxy_cache_key $host$uri$is_args$args; #增加设置web缓存的key值,nginx根据key值md5哈希存储缓存
  30.                 proxy_set_header Host $host;
  31.                 proxy_set_header X-Forwarded-For $remote_addr;
  32.                 #proxy_set_header Accept-Encoding 'gzip';
  33.                 proxy_cache_valid 200 304 1000d;
  34.                 expires 1000d;
  35.         }

  36.         error_page   500 502 503 504  /50x.html;
  37.         location = /50x.html {
  38.             root   html;
  39.         }

  40.     }

  41. }
复制代码
proxy.conf:
  1. proxy_temp_path /opt/nginx/proxy_temp_dir;
  2. proxy_cache_path /opt/nginx/proxy_cache_dir levels=1:2 keys_zone=mycache:512m inactive=100d max_size=1000g;
  3. #设置Web缓存区名称为cache_one,内存缓存为50MB,自动清除1天内没有被访问的文件,硬盘缓存为1GB。
  4. client_body_buffer_size 512k; #增加缓冲区代理缓冲客户端请求的最大字节数
  5. proxy_connect_timeout 60; #增加连接后端服务器超时时间
  6. proxy_read_timeout 60; #增加后端服务器响应请求超时时间
  7. proxy_send_timeout 60; #增加后端服务器发送数据超时时间
  8. proxy_buffer_size 32k; #增加代理请求缓存区大小
  9. proxy_buffers 4 64k; #增加
  10. proxy_busy_buffers_size 128k; #增加系统繁忙时可申请的proxy_buffers大小
  11. proxy_temp_file_write_size 128k; #增加proxy缓存临时文件的大小
  12. proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; #增加故障转移,如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
  13. proxy_cache mycache; #增加使用web缓存区cache_one
复制代码
sendfile关闭时,只是把nginx.conf中的sendfile=on改成sendfile=off,其他的没有变化。

           
     

论坛徽章:
2
技术图书徽章
日期:2013-10-31 10:04:19技术图书徽章
日期:2013-11-06 09:37:21
2 [报告]
发表于 2014-12-25 10:30 |只看该作者
upup
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP