AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 30240
Accepted
davitenio
davitenio
Asked: 2009-06-24 03:26:00 +0800 CST2009-06-24 03:26:00 +0800 CST 2009-06-24 03:26:00 +0800 CST

禁用 linux 上 apache2 的所有磁盘缓存

  • 772

出于基准测试的目的,我想强制 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 内核完成的缓存。

linux apache-2.2 benchmark disk-cache
  • 4 4 个回答
  • 10899 Views

4 个回答

  • Voted
  1. Best Answer
    David Spillett
    2009-06-24T09:30:01+08:002009-06-24T09:30:01+08:00

    我认为您不能禁用 Linux 中的所有磁盘缓存。

    作为 hack,您可以继续运行“sync; echo 3 > /proc/sys/vm/drop_caches”来刷新几乎所有缓存在内存中的内容。从控制台

    watch -n 1 `sync; echo 3 > /proc/sys/vm/drop_caches`
    

    会成功的。在上面的例子中,内核缓存的时间不会超过一秒钟,尽管它不会影响 Apache 或其他进程在内存中保存的数据。它也可能不会从任何仍然打开且部分锁定的内存映射文件中刷新内容。

    如果您只想在测试运行开始时不缓存任何内容,并且不在乎它是否在测试期间缓存内容,那么您只需添加一个对“sync”和“echo 3 > /proc/sys/vm”的调用/drop_caches”在您的测试运行开始时。

    如果您的测试涉及访问数据库的脚本,您将需要能够告诉您的数据库后端不要在测试之间也将内容缓存在 RAM 中。

    • 7
  2. David
    2009-06-24T04:23:00+08:002009-06-24T04:23:00+08:00

    您可以通过禁用 mod_cache 模块来禁用 Apache 中的大部分缓存,注释掉配置中的以下行应该可以解决问题:

    • LoadModule cache_module
    • LoadModule disk_cache_module
    • LoadModule mem_cache_module
    • 2
  3. Dave Cheney
    2009-06-24T19:18:17+08:002009-06-24T19:18:17+08:00

    不,不可能禁用缓冲区高速缓存。有一些方法可以以编程方式执行此操作(例如,在 O_DIRECT 中打开文件),但必须重写 apache 才能执行此操作。

    从本质上讲,您似乎正在尝试针对多个流传输兆字节大小的文件对 IO 子系统进行基准测试。有很多更好的方法可以做到这一点,而不会将 apache 的开销混入图片中。

    如果您决定尝试这样做,您可以尝试编写一个小程序来分配机器中的大部分物理内存以减少可用磁盘缓存的数量,但这可能会导致服务器页面破坏您的基准测试结果(apaches 多进程除非您将StartServers,MinServers和设置MaxServers为相同的值以避免在基准测试运行期间创建进程,否则模型将与此交互不良)

    • 1
  4. Matt Simmons
    2009-06-24T09:22:11+08:002009-06-24T09:22:11+08:00

    我在这里可能非常不平衡(如果我做出不正确的假设,请告诉我),但 Linux 中的磁盘缓存称为交换,并使用交换文件或交换分区。

    swapoff -a 
    

    应该禁用磁盘缓存。

    • 0

相关问题

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • mod_rewrite 不转发 GET 参数

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve