我负责托pipe一个大而缓慢的PHP应用程序,但容易扩展。 该应用程序是完全静态的,需要可写的磁盘存储。 我们已经描述了应用程序,主要瓶颈似乎来自加载应用程序,而不是应用程序所做的工作。 该应用程序不是CPU密集型的,尽pipe它使用了相当数量的内存(想想Magento)。
目前我们通过在硬盘上安装一系列具有相同PHP文件的服务器以及在它们前面的负载平衡器来分发它。 简单但昂贵。
我一直在阅读关于RAM磁盘和他们提供的IO好处,并想知道它们是否适合PHP应用程序。
由于PHP应用程序是从磁盘为每个请求加载的,并且通常涉及大量不同的文件(与存储在Java应用程序中相反),所以我认为磁盘性能可能是一个严重的瓶颈。
将PHP文件放在RAM磁盘上,并使用安装点作为Apache的文档根提供性能优势? 启动脚本可以创buildRAM驱动器,然后将文件(纯文本和小文件)从永久位置复制到临时RAM驱动器。
这是否有意义,还是我应该相信Linux内核自己将相应的文件caching在内存中?
不,一个ramdisk实际上会伤害PHP(当与PHP加速器等更好的解决scheme结合在一起时)。
提高PHP性能的最佳方法是使用PHP加速器。 这些是插入到Web引擎的模块(例如apache httpd),并cachingPHP脚本的编译字节码。 这个caching然后存储在内存中。 结果是将来对PHP脚本的调用根本不会进入磁盘,预编译的字节代码将从caching中取出。 这意味着你不会从使用虚拟硬盘获得任何东西,而是最终会消耗可能在其他地方使用的内存。
根据您的发行版和您使用的Web服务器引擎,很可能您已经有一个PHP加速器在运行。
。
这里有两个很好的关于这个主题的维基百科文章:
PHP加速器
PHP加速器列表
我倾向于认为,如果你的机器有足够的内存,操作系统磁盘caching也可以caching适当的内容(如果不是更好的话,因为它不会caching未被使用的文件),但你应该在testing服务器上进行基准testing,在validation你实际上是过度地(用sar)打击磁盘之后。
PHP的最大代价就是解释器必须要求的每一个请求
使用APC,您可以跳过所有步骤并直接执行。 如果您遇到性能问题,尤其是在观察到您提到的性能分析结果之后,请安装并configurationAPC。 你会惊讶于你获得的性能好处。
我面临着为HowTopedia组织优化大量wiki的问题 ; 新闻发布后,他们得到的报纸报道系统地将系统负载率提高到100%。 configurationAPC只有25 MB的caching带来的系统负载直接小于5%。 一些进一步的基本调整小于1%。
同时,由于步骤1-3所做的大部分步骤都是引入延迟,所以用户所经历的响应时间显着提高。
您描述的场景的一些进一步提示:
不,如果内存已经是瓶颈的话,不会。