d8888 888 888      88888888888 888      d8b                                 888       888          888       .d8888b.           888                               
      d88888 888 888          888     888      Y8P                                 888   o   888          888      d88P  Y88b          888                               
     d88P888 888 888          888     888                                          888  d8b  888          888      Y88b.               888                               
    d88P 888 888 888          888     88888b.  888 88888b.   .d88b.  .d8888b       888 d888b 888  .d88b.  88888b.   "Y888b.   88888b.  88888b.   .d88b.  888d888 .d88b.  
   d88P  888 888 888          888     888 "88b 888 888 "88b d88P"88b 88K           888d88888b888 d8P  Y8b 888 "88b     "Y88b. 888 "88b 888 "88b d8P  Y8b 888P"  d8P  Y8b 
  d88P   888 888 888          888     888  888 888 888  888 888  888 "Y8888b.      88888P Y88888 88888888 888  888       "888 888  888 888  888 88888888 888    88888888 
 d8888888888 888 888          888     888  888 888 888  888 Y88b 888      X88      8888P   Y8888 Y8b.     888 d88P Y88b  d88P 888 d88P 888  888 Y8b.     888    Y8b.     
d88P     888 888 888          888     888  888 888 888  888  "Y88888  88888P'      888P     Y888  "Y8888  88888P"   "Y8888P"  88888P"  888  888  "Y8888  888     "Y8888  
                                                                 888                                                          888                                        
                                                            Y8b d88P                                                          888                                        
                                                             "Y88P"                                                           888   

All Things WebSphere

Concerns and issues relating to all versions of WebSphere Application Server

Monday, February 22, 2010

 

Dynacache and the Edge Side Include (ESI) cache in WebSphere

WebSphere ESI is a static and dynamic cache at the edge of the network. This cache resides in the WebSphere Proxy or the WebSphere plugin. The cache is managed by the Dynacache component of the WebSphere Applications Server. For details of how to configure ESI caching, refer to the “Configuring Edge SideInclude caching” section in the WebSphere Application Server Information Center.

ESI can cache static as well as dynamic content:
  • Static caching with ESI: Well explained here: http://www.ibm.com/developerworks/websphere/techjournal/0405_hines/0405_hines.html All the static content of WAS(images, javascript, pdf's) is cached in the Plugin ESI cache if static caching is enabled.  
  • Dynamic caching with ESI: All the includes in the JSP/Servlet/JSF are replaced with esi:includes that are fluffed up and cached by the WebSphere plugin ESI cache.The ESI cache can contain whole pages or fragments. It will dynamically assemble Web pages containing ESI tags from your existing application. 
The ESI cache (static and dynamic) in the WebSphere plugin or the WebSphere proxy can be monitored and administered using the WebSphere Cache monitor. ESI Cache statistics can been viewed in the cache monitor. The DynaCacheEsi.ear application along with the plugin/proxy is responsible for maintaining the backend communication channel for invalidating the cache. This application MUST be installed for cache content in the ESI cache to remain fresh i.e. for items to expire and to be invalidated by WebSphere Application Server. Once the ESIInvalidationMonitor plugin-cfg.xml property is set to true (for invalidations flow back to the ESI processor), then a long-running connection is maintained from each process to the ESIInvalidatorServlet in each application server cluster.

Plugin/Proxy-WAS interaction on the long running thread
On the first request to the plugin for a particular app server virtual host, the plugin checks to see if a connection has been made to the ESIInvalidatorServlet and if not establishes a long running connection to that particular virtual host. Therefore if the plugin is communicating with the app. server on the http and https ports then each webserver plugin process will establish 2 ESI connections to the app. server. If there are 6 web server plugin processes then there are correspondingly 12 ESI connections to the application Server. Each long running connection runs/blocks a webcontainer thread on app. server and therefore "hung thread" messages for webcontainer threads appear in the SystemOut.log when ESI is enabled.

- The The ESIProcessor WebContainer thread will only be reported once time as being hung. Once the thread is flagged as hung it is not checked again and never reported again. However, if the thread was returned to the pool and reused its status would be reset and be subject to being reported as hung again.
- Every 45 seconds the ESIProcessor webcontainer thread requests the webserver's PID and then reads on the input data stream. The read will either return the webserver's response or an exception. There is no timeout of the read. If the connection is up a response will be return, if not, an IOException occurs and the long running connection is torn down releasing the webcontainer thread.

Read more about configuring ESI and Dynacache here

Comments:

Post a Comment

Subscribe to Post Comments [Atom]



Links to this post:

Create a Link



<< Home

Archives

December 2006   September 2008   January 2009   February 2009   March 2009   September 2009   October 2009   November 2009   December 2009   January 2010   February 2010   March 2010   April 2010   October 2010   January 2011   February 2011   April 2011   May 2011   June 2011   July 2011   August 2011   September 2011   October 2011   November 2011   December 2011   January 2012   February 2012   March 2012   April 2012   May 2012   June 2012   July 2012   August 2012   September 2012   October 2012   November 2012   January 2013   May 2013   June 2013   July 2013   September 2013   October 2013   June 2014   August 2014  

This page is powered by Blogger. Isn't yours?

Subscribe to Posts [Atom]