【问题标题】:Nginx and Tornado: Sending large files to http clientNginx 和 Tornado:向 http 客户端发送大文件
【发布时间】:2016-01-04 17:01:27
【问题描述】:

我编写了一个用于查看大型日志文件的 Web 应用程序。每个日志文件可以超过 500MB,每个文件包含 100K 行或更少。我使用 supervisord 来管理启动的 8 个龙卷风实例,并使用 nginx 将请求重定向到 8 个龙卷风实例中的每一个。部署后,我注意到请求被锁定并且内存使用量很大。

我当前的实现只是从文件中逐行读取每一行并通过 websocket 发送。我选择通过 websocket 进行通信,因为它允许我向用户显示进度。当只有一两个用户时,这很有效,但一旦有更多用户开始提交加载文件的请求,服务器就会陷入困境。

我希望有人可以建议我将大文件发送给客户端以便在他们的网络浏览器中查看而不会阻止未来请求的最佳方式。可以有 30 到 50 个用户同时加载日志文件。我已经阅读了this 解决方案,这似乎是我需要的,但我不知道这是否是最好的解决方案。

【问题讨论】:

    标签: nginx tornado large-files


    【解决方案1】:

    提到Generate large file and send it恕我直言是发送大数据的最佳方式(也许是唯一不进入内部的非阻塞方式)。

    另一方面,通过运行单独的进程cat 并使用PipeIOStream,读取文件可能实现为完全非阻塞的方式,这是一种古董。当然这样阅读并不是最好的解决方案,但是在实现tail -f的时候就变得很方便了。

    不同的方法

    但我个人会使用 nginx 来完成这项任务,因为您想提供大文件,仅此而已(没有 tail -f)。进展可以在js 中实施。有用的资源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2012-10-27
      • 2014-03-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      相关资源
      最近更新 更多