dkm
作者dkm·2010-04-16 16:57
软件架构设计师·广州八斗软件科技有限公司

页面静态方案

字数 7648阅读 5508评论 4赞 7
    Websphere性能优化

页面静态方案

 

       通过IBM Http Server(下文称为IHS)静态页面分离技术与利用WebSpere Application Server(下文称为WAS)的动态高速缓存(Dynamic Cache)技术优化访问页面性能。客户端访问静态页面无须与后端数据交互,减少了容器与数据源的压力,从而达到优化系统的性能。

 

       IBM Http Server不但可以作为 WAS 的前一级 Http 请求队列的缓冲,减轻WAS的压力,还可以利用其静态页面分离方案减轻部分压力。在系统的部署或者构建的时候,我们可以把一些非重要的静态页面放在 IHS 中,当客户端发送请求访问该页面资源时,由IHS直接响应请求并将静态页面资源返回客户端,无须再经过WAS,从而达到减轻达到WAS 负担的目的。

 

       除了IHS静态页面分离方案,另外还可以利用WAS的动态高速缓存技术,将J2EE应用中静态的(HtmlFlashCssJsJpgGif图片等文件)和动态的(需要与数据库、Web Service等服务交互才能得到的数据)内容缓存到应用服务器的JVM(如:JspServlet*.do等请求)。在访问相关被缓存的资源时,所有的相关输出都可以直接从JVM的内容中获得,而无须再与数据库、Web Service、静态文件等交互,从而有效地提高系统的性能。

      IHS分离静态内容方案

    整个操作过程主要分3步完成

n  关闭WasFile Serving Servlet服务

n  重新生成插件(Plugin-cfg.xml)

n  修改IHS配置文件并拷贝静态文件到指定的目录

      

       关闭WasFile Serving Servlet服务

1)   Was中部署的Web应用中分别找到2个在/WEB-INF/ 目录下面的 ibm-web-ext.xmi 文件。

参考路径:

Ø  IBM/WebSphere/AppServer/profiles/节点/conf/cell/applications/应用包名/ deployments/应用包名/应用包名/WEB-INF/目录下

Ø  IBM/WebSphere/AppServer/profiles/节点/应用安装部署目录/应用包名/应用包名/WEB-INF/目录下

2)   打开 ibm-web-ext.xmi 文件,找到 fileServingEnabled 属性项,把它设为 flase, 默认是ture。找不到该属性项可直接手工添加(fileServingEnabled="false")。

如:

<?xml version="1.0" encoding="UTF-8"?>

<com.ibm.ejs.models.base.extensions.webappext:WebAppExtension

xmi:version="2.0"

xmlns:xmi="http://www.omg.org/XMI" xmlns:com.ibm.ejs.models.base.extensions.webappext="webappext.xmi" xmi:id="WebAppExtension_1260496854906"

fileServingEnabled="false">

<webApp href="WEB-INF/web.xml#WebApp_1260496854890"/>

  <jspAttributes xmi:id="JSPAttribute_1260496854906"

name="reloadEnabled" value="true"/>

  <jspAttributes xmi:id="JSPAttribute_1260496854907"

name="reloadInterval" value="10"/>

</com.ibm.ejs.models.base.extensions.webappext:WebAppExtension>

 

 

3)   重启Was,重启完校验配置是否生效。访问Web应用中的静态文件,如会报404错误的,这是正常现象,表示Was中的 File Serving servle 服务功能已经被关闭了。

 

       重新生成插件(Plugin-cfg.xml)

Ø  登陆Was控制台,环境->更新全局 Web 服务器插件配置->确定,重新生成插件。

Ø  服务器->Web服务器->选择相应的web服务器->生产播件->传播插件

Ø  检查配置文件是否正取。

打开IHS/Plugins/conf/web服务名/plugin-cfg.xml.找到UriGroup项,检查其配置。如Uri中的配置还是指定为 Name=”/*”,须注释该行配置,否则IHS会将所有的请求都返回给WAS处理,那么所有访问静态内容都会报404错误。可通过手工配置相应无须过滤的Uri

具体参考配置如下:

   <UriGroup Name="default_host_kpiCluster_URIs">

      <!--<Uri AffinityCookie="JSESSIONID"

AffinityURLIdentifier="jsessionid" Name="/*"/> -->

         <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/*.do"/>

      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="*.jsp*"/>

      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/j_security_check"/>

      <Uri AffinityCookie="JSESSIONID" AffinityURLIdentifier="jsessionid" Name="/ibm_security_logout"/>

   </UriGroup>

 

        修改IHS配置文件并拷贝静态文件到指定的目录  

1)   IHS的默认路径,打开 IBM HTTP Serverconfhttp.conf文件,找到如下配置:

             

#

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "D:IBMHTTPServer/htdocs/en_US"

                   

                    

#

# This should be changed to whatever you set DocumentRoot to.

#

<Directory "D:IBMHTTPServer/htdocs/en_US">

 

可将 D:IBMHTTPServer/htdocs/en_US 设置为新的目录,自定义新的静态页面目录。

我们将非重要的静态文件放到E:PageFiles2009-12-11目录下,配置如下:

DocumentRoot "E:PageFiles2009-12-11"

 

<Directory " E:PageFiles2009-12-11">

 

2)        把应用中的静态文件拷到 上述在Httpd.conf配置文件定义好的路径中去。

最后可根据上面的配置,将静态文件都是从Was应用中拷贝到E:PageFiles2009-12-11目录中。

3)        重新启动IHS

 

通过页面再次访问静态页面,此时不会再出现404错误了,IHS接到请求访问静态页面内容时,会直接读取E:PageFile2009-12-11返回页面请求,通过该配置可以进一步减轻Was的压力。

      启用WAS动态高速缓存

    启用动态高速缓存服务同样也分为3

n  WAS控制台上启用动态高速缓存服务

n  为应用服务器配置 Servlet 高速缓存

n  cachespec.xml配置文件

 

WAS控制台上启用动态高速缓存服务:

1)   登录Was的管理控制台

2)        在管理控制台中,启用服务器->应用程序服务器->Server1->容器服务->动态高速缓存服务

(勾上‘在服务器启动时启用服务’)

3)        确定并保存配置

 

为应用服务器配置 Servlet 高速缓存:

1)   在管理控制台中,启用服务器->应用程序服务器->Server1->Web容器设置->Web容器-> 启用servlet 高速缓存

(勾上‘启用servlet 高速缓存’)

2)        确定并保存配置

 

cachespec.xml配置文件

1)   在应用目录下WEB-INF/下增加cachespec.xml配置文件,通过该文件指定缓存对象。
       
内容如下:注意红色部分,要正确指定cachespec.dtd文件位置,一般情况下是在/IBM/WebSphere/Appserver/properties目录下。

 

<?xml version="1.0" ?>

<!DOCTYPE cache SYSTEM "D:IBMWebSphereAppServerpropertiescachespec.dtd">

<cache>

  <cache-entry>

      <class>servlet</class>

      <name>index.jsp</name>

      <cache-id>

         <component id="*" type="parameter">

            <required>false</required>

         </component>

         <component id="" type="pathinfo">

            <required>false</required>

         </component>

         <component id="host" type="header">

            <required>false</required>

         </component>

         <timeout>180</timeout>

      </cache-id>

  </cache-entry>

</cache>

 

2)   在完成前三步后,在服务器上安装Cache Monitor组件,来监控刚才配置的动态高速缓存(Dynamic Cache)是否成功运行。
   
发布IBM/WebSphere/AppServer/installableApps/CacheMonitor.ear,并且将该应用与要业务应用部署在用一个Server下。

3)   部署完毕后,重启整个WAS

4)   测试校验部署是否生效。

分别访问:

Ø  http://127.0.0.1/index.jsp

Ø  http://127.0.0.1/index.jsp?123

 

通过访问 http://127.0.0.1/cachemonitor  就可以查看到index.jsp已进行了缓存

如图所示:

 

 

以上的两种技术一种是基于WEB服务器一级别的优化,另一种则是基于Websphere应用服务器上的优化,合理的使用两种技术,可更有效的帮助应用系统提高性能。

    虽然在 WAS V6 以上的版本中,Web Container 对于 Http 请求采用了非阻塞I/O 方式,使得IHS 的这一功能作用已经非常弱化,但在大并发访问的情况下,还是建议大家使用IHS+WAS架构,使用IHS缓冲客户端请求与并且利用其得静态页面技术,直接返回静态资源,减轻应用服务器压力;开启Was动态高速缓存,缓存一些变动较少的JspServlet等资源,进一步有效的优化系统的性能。分别将IHSWAS 部署到两台物理主机上,可以让在系统在性能扩展上更加灵活,利用垂直扩展优化可更有效的提高系统的性能。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

7

添加新评论4 条评论

syf8377syf8377网络工程师松原市交警支队
2013-09-07 19:07
什么时候我能变成这么厉害
gallopgallop信息技术经理美的集团
2010-09-10 14:53
没有错。。。。

2010-08-11 21:50
好,值得一看啊。其实项目中有很多静态页面的应用呢!
月光无寒月光无寒系统工程师新疆电信
2010-07-02 11:58
IHS和was的静态页面分离。是好主意
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广