【发布时间】:2011-08-26 03:11:20
【问题描述】:
我正在为以下场景设计服务器:
- 一系列单个图像存储在 NAS 上,假设其中有 100 个
- 客户端通过 TCP 套接字连接到服务器并请求 image39
- 服务器从 NAS 读取 image39 并通过套接字发送回客户端
- 客户很可能还会请求该系列的其他图片,因此:
- 我想启动一个线程来遍历图像、读取它们并执行
cat image39 > /dev/null以强制缓存到服务器上的内存中 - 线程将按如下方式获取图像:image38、image40、image37、image41 等。
- 已获取的图像将被忽略
- 如果客户端现在请求 image77,我想重置获取线程以获取:image76、image78 等。
这必须扩展到许多系列和客户。可能在 1000 个并发量级 预取。我知道如果线程太多,线程可能会导致性能下降。改用 fork 一个新进程会更好吗?有没有比线程或进程更有效的方法?
谢谢!!!
【问题讨论】:
标签: linux caching disk prefetch nas