出于基准测试的目的,我想强制 Apache 2 从磁盘加载每个请求的文件,而不是从内存中的缓存加载它。从我读到的做同步之后
echo 3 > /proc/sys/vm/drop_caches
让我删除 linux 的缓存。对特定文件的后续请求将不会从 linux 的缓存中提供,但对同一文件的进一步请求将再次从 linux 的缓存中提供。之所以如此,是因为 /proc/sys/vm/drop_caches 不会禁用缓存,它只会丢弃到目前为止缓存的内容。我可能会在每个请求之前删除缓存,但我更喜欢另一种解决方案。我还能做些什么来确保 apache 从磁盘加载每个请求的文件?
我为什么要这样做:我知道在正常操作中启用了缓存。但是服务器不提供小型和频繁访问的文件,例如 html 页面、小图像等。相反,它提供的文件大小大多是来自非常大的文件集的几兆字节。这些文件的访问非常一致,因此每个单独的文件都很少被访问。因此,在正常操作中,我希望大多数访问不会导致缓存命中,但需要从磁盘加载文件。我有几个要使用 apache 的ab访问的示例文件衡量服务器每秒能够处理多少事务的基准。不幸的是,由于缓存,我相信我得到的结果过于乐观。因此,我想禁用 Linux 的磁盘缓存以及 Apache 可能自行执行的任何缓存。
更新:到目前为止给出的答案告诉我如何禁用 Apache 自己的缓存,但我仍然想知道是否有办法禁用 linux 内核完成的缓存。