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 / 问题 / 405786
Accepted
Tom Marthenal
Tom Marthenal
Asked: 2012-07-08 22:22:55 +0800 CST2012-07-08 22:22:55 +0800 CST 2012-07-08 22:22:55 +0800 CST

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

  • 772

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

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

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

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

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

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

linux ramdisk disk-cache
  • 4 4 个回答
  • 4343 Views

4 个回答

  • Voted
  1. Best Answer
    phemmer
    2012-07-08T23:37:14+08:002012-07-08T23:37:14+08:00

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

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

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

    .

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

    • 7
  2. womble
    2012-07-08T22:32:45+08:002012-07-08T22:32:45+08:00

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

    • 5
  3. michele
    2012-07-09T04:18:30+08:002012-07-09T04:18:30+08:00

    PHP 最大的问题是,对于每个请求,解释器都必须

    1. 从文件系统中获取文件
    2. 阅读
    3. 将其翻译成可执行形式
    4. 执行它

    使用APC,您可以跳过所有步骤并直接跳转到执行。如果您遇到性能问题,尤其是在观察到您提到的分析结果之后,请安装和配置 APC。您会对获得的性能提升感到惊讶。

    我面临着为Howtopedia组织优化大量 wiki 的问题;新闻发布后,他们获得的报纸报道系统性地使系统负载达到 100%。使用仅 25 MB 缓存配置 APC 可将系统负载直接降低到 5% 以下。一些进一步的基本调整到小于 1%。

    同时,由于步骤 1-3 所做的大部分工作都是引入延迟,因此用户体验到的响应时间得到了显着改善。

    针对您描述的场景的一些进一步提示:

    • 为 APC 提供 25MB 或更多的缓存段(确保您的操作系统允许此大小的 SHM 段)。APC 使用的缓存替换策略可确保您最常请求的内容将在缓存中,因此这可能会使您的命中率超过 95%。增加分配的内存带来的好处呈指数级下降。
    • 对于您提到的大多数静态应用程序,禁用 apc.stat 以获得进一步的性能。这允许 APC 直接在缓存中查找 PHP 文件,而无需在文件系统上检查自上次执行以来是否修改了文件系统。每个请求都完全从内存中获得服务,永远不会访问文件系统,从而产生显着的性能。
    • 运行 APC 后,您的性能瓶颈可能会转移到应用程序内部。特别是数据库和文件系统,如果您使用其中任何一个。Memcached可以帮助您解决那些对应用程序代码进行相对较小更改的问题。
    • 2
  4. hakre
    2013-08-24T05:27:29+08:002013-08-24T05:27:29+08:00

    不,如果 RAM 已经是瓶颈就不会了。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

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

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

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

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

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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