在linux上禁用apache2的所有磁盘缓存
出于基准测试目的,我想强制Apache 2从磁盘加载每个请求的文件,而不是从内存中的缓存加载它.从我所读到的做同步后跟
echo 3 > /proc/sys/vm/drop_caches 让我放弃linux的缓存.然后,不会从linux的缓存中提供对特定文件的后续请求,但是将再次从linux的缓存中提供对同一文件的进一步请求.这是因为/ proc / sys / vm / drop_caches不会禁用缓存,它只会丢弃当前缓存的内容.我可能会在每个请求之前删除缓存,但我更喜欢另一个解决方案.我还能做些什么来确保apache从磁盘加载每个请求的文件吗? 为什么我要这样做:我知道在正常操作中启用了缓存.但是服务器不提供小的和频繁访问的文件,例如html页面,小图像等.相反,它提供的文件大多数是几兆字节,来自一大堆文件.这些文件的访问非常统一,因此很少访问每个文件.因此,在正常操作中,我希望大多数访问不会导致缓存命中,但需要从磁盘加载文件.我有几个示例文件,我想使用apache的ab基准测试来测量服务器每秒可以处理的事务数.不幸的是,我相信我得到的结果因缓存而过于乐观.因此,我想禁用Linux的磁盘缓存,Apache可能会自行执行任何缓存. 更新:the answer given so far告诉我如何禁用Apache自己的缓存,但我仍然想知道是否有办法禁用Linux内核完成的缓存. 解决方法
我不认为你可以在Linux中禁用所有磁盘缓存.
作为一个黑客,您可以继续运行“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中的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 安排cron作业打开终端并按顺序运行命令
- linux – 如何在nginx中列出所有vhosts?
- linux – 无限字体和Windows字体模拟
- linux – samba openldap vs中型网络广告
- linux-kernel – Linux内核mutex_lock_interruptible
- linux中svn 的有关操作,简单易懂
- linux – 为什么我必须使用libtool –mode ==执行gdb wires
- linux – 如何通过bash / shellscript计算文件组中特定单词
- linux – 在哪里可以找到Postfix master.cf中使用的所有参数
- LINUX用户和用户组操作命令