【发布时间】:2016-05-21 15:22:07
【问题描述】:
我有一个自定义的多线程 http 服务器(在 c++ 中):
1) 接受不同视频流的媒体 ts 片段的 POSTS
2) 将其中的一堆存档到一个 zip 文件中(在磁盘上)
3) 并将 zip 文件上传到预配置的源/内容服务器(例如,在将 100 个段存档到 zip 文件之后)
问题是每个 zip 文件大约 100 MB 并且具有大量客户端 POST(每秒 150 个),上传这些 zip 文件会压倒 vsize/rss 并崩溃。(因为上传需要将 zip 文件读入内存)
是否有一种内存感知/内存有效的方法来确保上传线程可以在不占用内存的情况下实现最大吞吐量?
某种动态速率限制可能是为了让太多的客户端不会触发 vsize?
平台是 Linux Ubuntu 14.04
【问题讨论】:
-
我建议为您的服务器获取更多内存或限制可以同时上传的客户端数量(或者如果性能不是问题,则只需添加更多交换空间)..跨度>
-
为什么在上传时需要将整个 zip 文件保存到服务器内存中?你不能在上传的时候追加吗?请参阅此答案中 HTML5 的使用stackoverflow.com/questions/5053290/…
-
@JesperJuhl 有没有一种动态限制客户端而不是任何静态限制的好方法?
标签: c++ memory-management server out-of-memory scalability