略蛋疼的proxy_max_temp_file_size配置

352 views
Skip to first unread message

Kai Ding

unread,
Sep 19, 2014, 5:34:55 AM9/19/14
to open...@googlegroups.com
hi,all

我们线上架构是nginx + tomcat 提供下载上传以及其他服务,nginx上配置proxy_max_temp_file_size=200m,在前后端速度不对等的时候提供数据缓存。但是实际运行中发现,当

客户端下载速度比较慢时,大文件下到200多M时就会失败。

针对这个问题,主要是由于客户端下载速度比较慢,而nginx和tomcat之间高速传输,两端速度不对等,导致nginx和tomcat之间的连接一直处于idle状态,一定时间(tomcat的

keepalive时间)后tomcat主动断开连接,客户端下载失败。

我相信大家使用nginx时肯定也遇到,请教大神们对付这种问题都有哪些经验?

另外,春哥,你怎么看?

Josh Feng

unread,
Sep 19, 2014, 6:28:36 AM9/19/14
to open...@googlegroups.com
用流式方法处理,之前有人问过类似问题,你搜一下之前的邮件。

为什么要用tomcat输出这么大的文件?不能先输出成静态文件,然后用nginx直接处理。


发自我的 iPhone
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

Kai Ding

unread,
Sep 19, 2014, 6:34:54 AM9/19/14
to open...@googlegroups.com
因为我们提供的是存储服务,对象大小不确定

在 2014年9月19日星期五UTC+8下午6时28分36秒,Josh Feng写道:

Josh Feng

unread,
Sep 19, 2014, 7:44:26 AM9/19/14
to open...@googlegroups.com
用的是什么文件存储系统?

发自我的 iPhone

Kai Ding

unread,
Sep 19, 2014, 9:57:29 AM9/19/14
to open...@googlegroups.com
简单来说,nginx后端是我们的对象存储系统

在 2014年9月19日星期五UTC+8下午7时44分26秒,Josh Feng写道:

Yichun Zhang (agentzh)

unread,
Sep 19, 2014, 1:40:57 PM9/19/14
to openresty
Hello!

2014-09-19 2:34 GMT-07:00 Kai Ding:
> 我们线上架构是nginx + tomcat
> 提供下载上传以及其他服务,nginx上配置proxy_max_temp_file_size=200m,在前后端速度不对等的时候提供数据缓存。但是实际运行中发现,当
>
> 客户端下载速度比较慢时,大文件下到200多M时就会失败。
>

对于你的 nginx + tomcat 的配置,应当增大 nginx 的 proxy_max_temp_file_size 的设置,以便你的
tomcat 服务器生成的最大的响应也能放得进 nginx 生成的临时文件。该指令的默认值可是 1 个 G 啊。

tomcat 并不是以 C10K 能力著称的,所以还是不要用流式处理去考验它了。。。在这种 nginx + tomcat
的配置下,最安全最高效的做法还是在 nginx 一侧进行全缓冲。

Regards,
-agentzh
Reply all
Reply to author
Forward
0 new messages