部署 图片同时下载失败的问题

v2m · 2013年02月21日 · 最后由 v2m 回复于 2013年02月21日 · 2605 次阅读

Nginx + Passenger 部署的 ror 程序。 ror 程序中有很多图片放在 public 目录下面,这些图片有的很大。当我在客户端并发的同时取这些图片的时候,前面的会成功,然后后面的一些图片就出现 500 错误,有的下载到一半就不在继续下载了。 请问 Ngnix 的配置文件要怎么修改呢?

ps:我用 ab 测试我的服务器,发现并发数只有 1,可是我的 worker_processes 已经设置成 2 了,这个是什么问题呢?

你的图片和其他的一些静态文件应该交给 Nginx 来处理,然他们不要通过 Rails

#1 楼 @huacnlee 具体要怎么做呢?在 Nginx 的配置文件里面处理么?

#3 楼 @huacnlee 我已经通过 Ngnix 处理了,如果通过 域名或者 ip:80 端口访问的话,还是会出现 500 错误。我另外开了一个 WEBrick 的服务,用 ip:3000 来访问就没有问题。

看 Nginx 和 Rails 的日志,找错误原因

#5 楼 @huacnlee Ngnix 的只有访问日志有记录,这些 500,网络中断类的问题没有在 ngnix 的 error.log 里面添加类容。rails 因为仅仅只是访问的是 public 目录下面的文件,所以没有日志 所以我觉得可能还是配置哪里出了问题

#4 楼 @v2m 出现 500 说明可能还是在过 rails。除了 Nginx 的 location 设置,检查一下environments/product.rbconfig.serve_static_assets 有没有设为 false

#7 楼 @ashchan 主要的情况就是图片每个可能有 500k-2m,我的客户端是并发同时的下载 10-20 个图片这样,前面的几个是 ok 的,几个之后就开始出错了。我客户端的提示是“网络连接已中断”,不清楚 ngnix 对这样的请求是不是要特殊设置一下?

#9 楼 @v2m curl -I http://example.com/assets/test.jpg 看显示什么信息。注意填入你自己的真实图片地址。

#10 楼 @ashchan 这个信息 HTTP/1.1 200 OK Server: nginx/1.2.6 Date: Thu, 21 Feb 2013 10:47:14 GMT Content-Type: image/jpeg Content-Length: 451417 Last-Modified: Fri, 01 Feb 2013 13:04:28 GMT Connection: keep-alive Accept-Ranges: bytes

需要 登录 后方可回复, 如果你还没有账号请 注册新账号