PHP 应用程序是否会从 RAM 驱动器提供服务中受益?

Tom*_*nal 2 linux disk-cache ramdisk

我负责托管一个又大又慢但易于扩展的 PHP 应用程序。该应用程序是完全静态的,需要可写磁盘存储。我们已经分析了应用程序,主要瓶颈似乎来自加载应用程序而不是应用程序所做的工作。该应用程序不是 CPU 密集型的,尽管它确实使用了相当数量的内存(想想 Magento)。

目前,我们通过在硬盘驱动器上具有相同 PHP 文件的一系列服务器和在它们前面的负载平衡器来分发它。容易但昂贵。

我一直在阅读有关RAM 磁盘及其提供的 IO 优势的信息,并想知道它们是否非常适合 PHP 应用程序。

由于 PHP 应用程序是针对每个请求从磁盘加载的,并且通常涉及许多不同的文件(而不是像 Java 应用程序那样保存在内存中),我认为磁盘性能可能是一个严重的瓶颈。

将 PHP 文件放在 RAM 磁盘上并使用挂载点作为 Apache 的文档根目录会提供性能优势吗?启动脚本可以创建 RAM 驱动器,然后将文件(纯文本和小文件)从永久位置复制到临时 RAM 驱动器。

这是否有意义,还是我应该相信 linux 内核自己将适当的文件缓存在内存中?

phe*_*mer 7

不,虚拟磁盘实际上会损害 PHP(当与 PHP 加速器等更好的解决方案结合使用时)。

提高 PHP 性能的最好方法是使用 PHP 加速器。这些是插入 Web 引擎(例如 apache httpd)并缓存 PHP 脚本的编译字节码的模块。然后将该缓存存储在 ram 中。结果是以后对 PHP 脚本的调用根本不会进入磁盘,预编译的字节码会从缓存中提取。这意味着您不会从使用 ramdisk 中获得任何好处,而是最终消耗了可以在其他地方使用的 ram。

根据您的发行版和您使用的 Web 服务器引擎,您可能已经运行了 PHP 加速器。

.

这是关于该主题的 2 篇很好的维基百科文章:
PHP 加速器 PHP 加速器
列表

  • Ramdisk 怎么会损害性能呢?如果加速器配置正确的话,它可能不会增加太多,但它怎么可能会变坏呢? (2认同)

wom*_*ble 5

我倾向于认为,如果你有一台具有足够 RAM 的机器,操作系统磁盘缓存在缓存适当的内容方面也能做得很好(如果不是更好的话,因为它不会缓存未使用的文件) ),但是在验证您实际上过度访问磁盘(使用 sar)后,您应该在测试服务器上对其进行基准测试。