测量由于PHP,URI路由导致的服务器性能影响

时间:2011-06-14 02:53:14

标签: php apache .htaccess mod-rewrite routing

我正在重新设计我工作的公司如何开发网站。以旧的方式,经常有几个重复的php文件被调用来呈现页面。 例如page1.php?id = 5,page2.php?id = 7其中page1.php和page2.php在大多数情况下只是相同代码的副本。这种重复是由于尝试支持和维护与旧框架的兼容性而产生的。

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

但我被要求显示此更改可能对服务器产生的正面或负面影响。

这种仅使用一个文件来处理请求的方法是否会减少服务器开销,或者如果有大量人员访问某个站点,这会增加服务器超载的可能性。是否有任何工具能够衡量绩效差异以产生此类报告?

2 个答案:

答案 0 :(得分:1)

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

  • 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-rewrite不会产生很大的影响,但是你应该测试它:-)如果你有很多url来重写mod-rewrite有一个很好的工具: rewriteMap 。您将在外部文件中编写您的网址映射,一旦情况正常,您甚至可以构建此地图文件的哈希版本,这样您就可以获得每个网址的灰化索引访问权限url,这应该是闪电般的。

答案 1 :(得分:0)

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

除非你有一些复杂的重写规则,否则使用重写的开销在基准测试中可能甚至不明显。