【发布时间】:2010-12-02 14:23:21
【问题描述】:
我有一个 PHP 文件,它从 Memcached 获取 HTML 并将其提供给用户。当我这样测试时:
ab -n 1000 -c 100 http://website.com/test.php
它每秒执行 22 个请求。
但是当我将相同的 HTML 放入一个 HTML 文件并进行此测试时:
ab -n 1000 -c 100 http://website.com/test.html
我每秒收到大约 4500 个请求。
我需要坚持使用 PHP,因为第一次我需要生成 HTML,而下一次我只是从 Memcached 获取生成的 HTML。此外,我显示的 HTML 对于每个其他用户都是不同的(基于 $_GET ['user_id'] 值识别)。有没有办法让RPS更高?更接近于提供纯 HTML?
我使用lighttpd 作为网络服务器。
【问题讨论】:
-
您确定这些响应来自缓存吗?
-
“页面的
$_GET['user_id']related 部分需要多少”PHP 以及“提高速度有多重要”?您是否还测试了仅服务于 memcache 部分 - 仅此而已?当您进行ab -c 100测试时,运行了多少个 PHP 进程/后端? -
@VolkerK 我不明白你所说的“多少,多么重要”部分是什么意思。你能给我解释一下吗?当我运行 ab -c 100 时,我有 10 个 lighttpd 进程和 100 个 php-cgi 进程。
-
在对您之前的问题 (stackoverflow.com/questions/1496987/…) 的评论中,您说“因为我上次发布此应用时有 10k 个并发请求”,我只是想知道您愿意做什么做以提高性能。也许(只是也许,我认为我们还没有;-))甚至像从 php 切换到 lighthttpd 的 C 插件?
-
@VolkerK 这是 C 插件的一个想法。所以你认为这是php解析器的问题吗?我使用 APC 操作码缓存。它应该有帮助。也许是糟糕的 PHP、Memcached 甚至 Lighttpd 配置?如何诊断?
标签: php html performance memcached scalability