【问题标题】:How can I prevent memory exhaustion using a CakePHP application?如何使用 CakePHP 应用程序防止内存耗尽?
【发布时间】:2014-10-07 07:40:48
【问题描述】:

我在 VPS 服务器上(具有 768MB RAM 的四核。我正在运行 Apache 并使用 APC 作为我的默认缓存引擎)。我每天有大约 2000 名访客,最多有 100 名并发访客。 根据 CakePHP DebugKit 的说法,我最占用内存的页面大约使用 16MB,而其他页面平均使用大约 10MB。

  • 这个内存使用正常吗?
  • 我的内存瓶颈在每页 2000 位访问者时是否正常?
  • 我是否应该考虑将我的计划升级到 2GB RAM?

我还注意到视图渲染占用了大部分内存,在大多数页面上大约占 70%。

我正在监控我的资源使用情况,当我有大约 50 个或更多并发用户时,我将获得 0 个可用 MB。

谢谢

【问题讨论】:

    标签: php apache cakephp memory-management


    【解决方案1】:

    您还应该检查您的其他进程。根据我的经验,MySQL 在我运行的任何堆栈上占用的内存都比其他任何东西都多。您还应该实现更好的页面缓存,以便在不是绝对必要时不需要触及 PHP。但是 Apache 也是一个需要微调的内存猪。如果你想坚持使用 Apache,那就在它前面运行 Varnish。

    另外,保留 APC,还要添加 Memcached。它要快得多。

    如果您的网站有一个峰值负载,使其内存为零,那么,如果可以,请考虑启动额外的服务器实例并执行某种循环(如果 VPS 是云托管的并且这是可能的)。如果负载恒定,那么一定要升级。

    @burzum 是完全正确的,但是,您应该切换到 nginx。在这一点上,它比 Apache 好得多。但是,为了让你走上正轨,很多人在 Apache 前面运行 nginx 作为反向代理,虽然这确实加快了服务器速度,但完全没有必要,因为 nginx 几乎可以做任何你需要它做的事情没有阿帕奇。也不要在 nginx 前面使用 Varnish,因为 nginx 可以充当自己的反向代理。

    最好的办法是使用 apcu 实现 nginx(如果可能,将 php 升级到 5.5 以获得更好的性能)并使用 memcached,并实现 nginx 的本机微缓存能力。如果您的网站重读轻写,那么您可能会注意到一切都由 nginx 处理,只是从 memcache 中检索缓存副本。虽然这有助于记忆,但也有助于处理。我的服务器的 CPU 在高峰期通常有 3-5% 的使用率。

    【讨论】:

      【解决方案2】:

      这个内存使用正常吗?

      是的,对于一个普通的 CakePHP 应用程序来说似乎并不高。

      每页有 2000 个访问者时,我的内存瓶颈是否正常?

      我想是的,我不是“服务员”。

      我是否应该考虑将我的计划升级到 2GB RAM?

      我会先尝试切换到 Nginx。与 Nginx 相比,Apache 是一个消耗内存的怪物,只需搜索几个基准,我通过快速搜索选择的一个 随机来自 this 页面。

      整体 Nginx 应该为您提供更好的性能。在某个阶段,我会考虑更新内存,但先尝试 Nginx。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        相关资源
        最近更新 更多