作者:tacy lee
有用Websphere做过项目的人可能都知道,ibm一般都建议在Websphere前面加一个IHS来做webserver,据说这样性能会提高30%左右,这样说是否有道理呢,下面我做了一个简单的测试来验证:
测试环境:
硬件:
应用服务器:Dell6600
压力测试客户端:自用笔记本(T2050 1.6G)
软件:
系统:CentOS 4.4
Websphere 6.0.2.17+IHS6.0.2.17(部署在同一台机器上)
首先配置好Websphere和IHS,发布一个简单的测试应用,用loadrunner来测试一下不同的组合看看(录制一个打开首页就可以了),下面是我的测试数据:
测试方法 | 每秒处理请求数 | 响应时间 | 服务器CPU |
直接请求Websphere | 4600/s | 0.013s | 28% |
通过IHS转发请求 | 6800/s | 0.009s | 26% |
数据显示,这还不是一点点提升,竟然快接近50%,把静态资源放置到IHS中测试了一把,基本和通过IHS转发差不多,稍微有些提升,不过放到IHS中可以方便Cache(Edge Server就包括了Caching Proxy component)
下面记录一下如何放置静态资源文件到IHS中:
1、打开Plugins中的plugin-cfg.xml,修改如下内容:
<UriGroup Name="default_host_eos_URIs">
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/*.jsp"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/*.do"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/eosmgr/*"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/axis/*"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/axis2/*"/>
<Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/eoshome_deploy/*"/>
</UriGroup>
也可以通过修改WEB-INF下ibm-web-ext.xmi中的fileServingEnabled为false,然后重新生成plugin-cfg.xml,但是我试了一下好像不好用。
另外Websphere(fixpacks 5.1.1.17, 6.0.2.25 and 6.1.0.15)之后的版本给Webcontainer增加了一个自定义参数
com.ibm.ws.webcontainer.disallowAllFileServing
设定它为true产生同样的效果(而且他会覆盖ibm-web-ext.xmi中的设置)。
2、拷贝你的所有资源文件到IHS的Root Directory中
3、重启IHS