对于我正在监控的 PHP 网站,我需要查看浏览器每次发出请求时使用了哪些文件。
我想到了使用find . -type f -amin 1
.
这样我就得到了最后一分钟读取的所有文件(这是一个开发中的服务器,所以只有我在使用该网站)。
我负责noatime
从安装点删除属性。
但是,必须有其他东西阻止内核读取磁盘上的实际文件,因为当我读取文件时访问时间没有更新。
我想一定是文件系统缓存从内存中检索文件。
有没有办法禁用特定目录下的文件缓存?(在我的例子中是 public_html)
另外我在某处读到有nobh
安装属性,显然在该安装点下禁用文件缓存,但我不确定。
为什么不看看 apache 日志?它列出了使用时间戳访问的每个文件以及访问它的人。
如果您必须使用 atime,请注意 stat 系统调用的维基百科页面中的以下内容:
Linux 内核开发人员 Ingo Molnár 将 atime 称为“可能是有史以来最愚蠢的 Unix 设计理念”,并补充说:“稍微考虑一下:'对于从磁盘读取的每个文件,让我们做一个......写入磁盘!而且,对于每个已经缓存的文件以及我们从缓存中读取的文件......都写入磁盘!'“他进一步强调了性能影响,因此:
atime updates 是目前 Linux 最大的 I/O 性能缺陷。摆脱 atime 更新将使我们的日常 Linux 性能超过过去 10 年所有页面缓存加速的总和。
当前版本的 Linux 支持四种挂载选项,可以在 fstab 中指定:
除非我遗漏了什么,否则您可以简单地跟踪服务器日志。
对于阿帕奇:
tail -f /var/log/httpd/access_log
如果 PHP 正在读取浏览器请求中未包含的其他文件(包括等),您可以打开审计。
auditctl -w /path/to/watch -p r -k php-access
您只会对 PHP 的读取感兴趣。
ausearch -k php-access -ui <uid php uses>