[原创]Apache Rewrite对apache性能影响的测试

news/2024/7/5 19:38:28


Apache Rewrite对apache性能影响的测试


[ Apache rewrite规则 ]

Apache中这个rewrite规则能把http://localhost/heiyeluren/readme.txt 重写到 D:/kiss/wwwroot/h/e/i/heiyeluren/readme.txt

修改httpd.conf,增加:

RewriteEngine On
RewriteRule ^/(
[ 0-9a-z ] )( [ 0-9a-z ] )( [ 0-9a-z ] )( [ 0-9a-z ] +)/(.*) /$ 1 /$ 2 /$ 3 /$ 1 $ 2 $ 3 $ 4 /$ 5   [ L ]

 

[ 性能测试 ]

使用 http_load 来进行页面访问测试 (下载http_load: http://www.acme.com/software/http_load/)
命令格式:http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件

准备URL文件:tst.list,文件格式是每行一个URL,URL最好超过50个测试效果比较好,另外,测试结果中我们主要是关心 fetches/sec 这个选项,这个我们称之为QPS,大致就是一台服务器每秒能够相应的查询次数,下面看到的测试结果中的 xxxx  fetches/sec 就是每秒能够相应的查询次数,用这个来衡量性能。
PS:http_load 比 apache自带的 ab 要强不少,准确率也要高。


有rewrite,访问rewrite之后的URL

http_load -p 30 -s 60  tst.list
^[c137829 fetches, 26 max parallel, 275658 bytes, in 60.0003 seconds
2 mean bytes/connection
2297.14 fetches/sec, 4594.28 bytes/sec
msecs/connect: 0.0604275 mean, 11.447 max, 0.021 min
msecs/first-response: 2.70699 mean, 1190.06 max, 0.305 min


有rewrite,直接访问rewrite之前的URL

http_load -p 30 -s 60  tst2.list
148477  fetches ,   30  max parallel ,   296954  bytes ,  in  60  seconds
2  mean bytes/connection
2474.62 fetches/sec ,   4949.23  bytes/sec
msecs/connect: 
0.058889  mean ,   8.447  max ,   0.02  min
msecs/first-response: 
2.52814  mean ,   1324.63  max ,   0.298  min


无rewrite,直接访问rewrite之前的URL

http_load -p 30 -s 60  tst2.list
151920  fetches ,   29  max parallel ,   303840  bytes ,  in  60  seconds
2  mean bytes/connection
2532 fetches/sec ,   5064  bytes/sec
msecs/connect: 
0.0608508  mean ,   153.375  max ,   0.02  min
msecs/first-response: 
2.35597  mean ,   1091.58  max ,   0.259  min

 

有rewrite,但通过proxy实现

http_load -p 30 -s 60  tst.list
58586  fetches ,   30  max parallel ,   117172  bytes ,  in  60.001  seconds
2  mean bytes/connection
976.417 fetches/sec ,   1952.83  bytes/sec
msecs/connect: 
0.0769494  mean ,   100.978  max ,   0.022  min
msecs/first-response: 
8.93129  mean ,   1190.54  max ,   0.871  min

 


[ 结论 ]

  • apache的rewrite会产生微小的cpu开销,导致一些性能损失,但这个损失并不特别明显,所以不要害怕rewrite,当然规则太多性能可能也会有影响,所以尽量不要太多规则
  • proxy很慢,且存在安全隐患(SSL是不支持proxy的),带[P]的rewriterule就是proxy。因此,除非万不得已(比如客户端js跨域),应尽量避免使用proxy。
  • proxy不是apache的专长,如果为了反向代理加速,squid通常是一个更合适的选择。


PS:最后感谢同事健祥同学提供测试结果和相应说明,我只是进行了一些文字优化。:-)


 





http://www.niftyadmin.cn/n/3652637.html

相关文章

每次装完 homebrew,ohmyzsh 就会报错:Insecure completion-dependent directories detected:

参考:https://zhuanlan.zhihu.com/p/313037188 这是因为在big sur安装homebrew后,会在/usr/local/share/生成一个zsh文件夹,里面包含了 因此,zsh文件默认设置的权限是775,也就是group user有writer的权利,zsh认为这是…

[转]InnoDB vs MyISAM vs Falcon benchmarks - part 1

InnoDB vs MyISAM vs Falcon benchmarks - part 1来源:http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/Several days ago MySQL AB made new storage engine Falcon available for wide auditory. We cannot miss t…

DHCP的配置与命令

文章目录DHCPDHCP的好处DHCP的典型应用模式DHCP采用UDP协议,服务器端口为67号口,客户端为68号口分为几步DHCP中继接口模式全局模式DHCP中继服务器DHCP 用途:1、给内部网络或网络服务供应商自动分配IP地址 2、给用户或者内部网络管理员作为对…

ACL访问控制列表以及配置

文章目录访问控制列表(ACL)接口应用的方向ACL作用ACL种类应用原则应用规则配置实例访问控制列表(ACL) 读取第三层,第四层包头信息(IP包头、TCP包头) IP包头:源地址,目的…

[原创] Memcache分组和同步机制的实现

[原创] Memcache分组和同步机制的实现作者:heiyeluren博客:http://blog.csdn.net/heiyeshuwu时间:2007-06-25【Memcache同步类的实现思想】首先我们明确了解就是Memcache是一个简单、快速、高效的分布式基于内存的缓存工具,一般用…

一个PHP图表绘制类 - Chart

Chart是一个使用PHP写的图表类,调用GD库来进行画图操作,最后维护时间是2004年,通用性不一定很强,但是绘制图表功能还不错,可以绘制自己需要一些简单的图表。下载地址:http://quimby.gnus.org/circus/chart/…

NAT网络地址转换的配置

文章目录NAT网络地址转换NAT工作原理NAT功能静态NAT全局模式下设置静态NAT动态NATPAT端口多路复用基本原理作用类型1、NAPT配置Easy IPNAT ServerNAT网络地址转换 NAT(Network Address Translation)又称为网络地址转换,用于实现私有网络和公有网络之间的互访。 NAT工作原理 …

[转]JpGraph简介 --功能超级强大的PHP画图库

来源:http://listdo.bokee.com/viewdiary.12328652.html一、 么是JpGraph以前用PHP作图时必须要掌握复杂抽象的画图函数,或者借助一些网上下载的花柱形图、饼形图的类来实现。没有一个统一的chart类来实现图表的快速开发。现在我们有了一个新的选择&…