【问题标题】:How to improve PHP performance?如何提高 PHP 性能?
【发布时间】:2010-12-02 14:10:42
【问题描述】:

我已经为 Facebook 创建了 PHP 应用程序。它使用 MySQL、Memcached 并在 Centos 2.6 Ghz 和 2 GB RAM 上的 Lighttpd 上运行。

它基本上是一个 PHP 文件,在第一次运行后被缓存,并且每次下一次直接从 Memcached 提供 0.8 毫秒。

我还能做些什么来缩短这个时间?

【问题讨论】:

  • 问题是为什么要“减少这段时间”?
  • 因为我上次发布这个应用程序时有 10k 个并发请求。所以它是 10k * 0,8 ms = 8 秒。而且太长了。
  • 可能,如果性能如此重要,您应该考虑用另一种语言编写应用程序并使用多个服务器。
  • @tharkun - 站点直接从 Memcached 显示,因此更改语言无济于事。
  • 你用 APC 试过了吗?

标签: php memcached scalability lighttpd


【解决方案1】:

一旦达到 0.8 毫秒,我不确定你是否可以再降低。

但是,您可以设置多个服务器来处理许多并发请求(使用一个通用的 memcached)。然后,您可以在达到限制时通过简单地添加新服务器来进行非常高的扩展。

【讨论】:

  • 同意。在开始研究硬件之前,您只能从软件方面做很多事情。
【解决方案2】:

运行 XDebug 并运行 profiler。在那里您可以查看是否有任何需要异常时间的功能。

我建议使用读取这些日志的程序。比如 kcachegrind 等。

顺便说一句,当你进入 profiler 国家时,没有回头路。

【讨论】:

  • 您好,我的代码基本上只是从 Memcached 中获取 HTML 并将其显示给用户。
  • 那么你应该注意了,因为你把它标记为 PHP 并谈论一个 PHP 应用程序
  • @Olafur 抱歉,如果我的问题不准确。但是正如你所写的,我确定再次询问了我的代码。所以谢谢 - 这可能是一个解决方案。
  • 即使页面很简单,您也可以从分析器中学到一些东西。有许多黑暗的角落,您可以在其中进行微优化。
【解决方案3】:

您可以将 http-proxy 和负载平衡放置到多个服务器上。大多数 http 代理都可以兼作缓存,从而减轻应用程序的负载。

此外,请确保发送正确的 http 标头,以便您的页面可在客户端缓存。这可能会减少请求的数量,因为客户端将重用其缓存版本。

【讨论】:

    【解决方案4】:

    您是否有一个从 memcached 获取数据并显示它们的 php 脚本,或者 Web 服务器本身直接从 memcached 获取数据?

    我不知道lighthttpd是否可以直接从memcached显示页面,但我知道nginx可以为ngx_http_memcached_module做这个google

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-26
      • 2014-09-23
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2012-06-16
      • 2021-06-13
      相关资源
      最近更新 更多