衡量PHP、URI路由对服务器性能的影响


Measuring performance impact on server due to PHP,URI routing

我正在重新设计我所在的公司开发网站的方式。按照旧的方式,通常会有几个重复的php文件被调用来呈现页面。例如page1.php?id=5,page2.php?id=7,其中page1.php和page2.php在大多数情况下只是同一代码的副本。这种重复是试图支持和保持与遗留框架的兼容性的结果。

新的提议本质上是一个干净的重写,使用.htaccess、mod_rewrite等通过同一文件路由所有调用

然而,我被要求展示这一变化可能对服务器产生的积极或消极影响。

这种只使用一个文件来处理请求的方法是减少了服务器开销,还是在大量人员访问某个网站时增加了服务器过载的可能性。是否有任何工具能够衡量绩效差异,以编制这样的报告?

对于性能影响,您可以使用apache社区的两个工具进行简单的基准测试:

  • ab,它是一种很好的基础应力工具
  • httperf
  • 还有一个autobench,它构建在httperf之上,在播放一些会话(可以从access.log分析中获得的会话)后,它将为您提供一些不错的图形

对于真正简单的影响测试,您也可以使用像这样的简单在线程序(更改真实的网站名称和IP,需要netcat):

time printf 'GET / HTTP/1.1'nHost:www.google.com'n'n' | nc -w 10 -q 10 209.85.146.103 80 1>/dev/null

Mod重写不会有太大的影响,但你应该测试一下:-)如果你有很多url要重写,Mod重写有一个很好的工具:rewriteMap。你将在一个外部文件中编写你的url映射,当一切正常时,你甚至可以构建这个映射文件的哈希版本,所以你将获得每个url的ashed索引访问权限,这应该是闪电般的快。

如果将规则放在主配置中,而不是放在.htaccess文件中,则可以最大限度地减少重写对服务器的性能影响。

除非您有一些复杂的重写规则,否则使用重写会增加的开销在基准测试中可能根本不明显。