<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2805163882887351730</id><updated>2012-01-17T02:51:20.526-08:00</updated><category term='zach braff'/><category term='shares'/><category term='frequent GC'/><category term='file descriptor'/><category term='JSP'/><category term='socket muxer'/><category term='cricket'/><category term='global local zones'/><category term='junit'/><category term='srk'/><category term='maven'/><category term='hindi music'/><category term='shah rukh khan'/><category term='catholic'/><category term='wordle'/><category term='execute thread'/><category term='app server'/><category term='raju'/><category term='findbugs'/><category term='tuning'/><category term='windows'/><category term='pstack'/><category term='shirdi'/><category term='performance'/><category term='dos'/><category term='JVM crash'/><category term='big whiskey and the groogrux king'/><category term='solaris'/><category term='NFS files'/><category term='sachin tendulkar'/><category term='JEE'/><category term='thread dump'/><category term='repository'/><category term='stuck thread'/><category term='JVM'/><category term='carter road'/><category term='ant'/><category term='test match'/><category term='application support'/><category term='core dump'/><category term='music'/><category term='xslt'/><category term='indie'/><category term='muxer'/><category term='labels'/><category term='alphonsa'/><category term='bandra'/><category term='tag clouds'/><category term='stock exchange'/><category term='JDK'/><category term='blogger'/><category term='dave matthews'/><category term='build'/><category term='kerala'/><category term='DMB'/><category term='twitter'/><category term='a r rahman'/><category term='weblogic'/><category term='GC'/><category term='prstat'/><category term='emma'/><category term='unix commands'/><category term='samurai'/><category term='FD'/><category term='java code'/><category term='satyam'/><category term='java.lang.reflect.InvocationTargetException'/><category term='new zealand'/><category term='bmw'/><title type='text'>You Never Know</title><subtitle type='html'>Jose's Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-3928064265796299065</id><published>2010-10-09T00:30:00.001-07:00</published><updated>2010-10-14T01:51:23.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app server'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Some info on Weblogic clustering</title><content type='html'>Recently &lt;a href="http://stackoverflow.com/q/3883516/289396"&gt;this question regarding Weblogic clustering came up on Stackoverflow&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I put some time into researching the answer I provided, and thought of putting this up on the blog as well.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Question&lt;/strong&gt; from &lt;a href="http://stackoverflow.com/users/469301/russell"&gt;user Russell&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I've read http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/overview.html and searched this topic on the internet but still had a hard time understanding some of weblogic's clustering concepts.&lt;br /&gt;&lt;br /&gt;Can anybody confirm/correct my understandings below?&lt;br /&gt;&lt;br /&gt;•a cluster contains one or more logical servers which can reside on one or many physical servers&lt;br /&gt;•when deploying a j2ee app to a cluster, it is tied to one server in that cluster&lt;br /&gt;•external users of the deployed app aren't aware of clustering&lt;br /&gt;•the log file of that app is located on the server it's deployed&lt;br /&gt;•if the server hosting the app fails, it's okay because the app is in a cluster and another server will pick up the work?&lt;br /&gt;•if the server hosting the app fails, what happens to logging?&lt;br /&gt;Maybe I got the whole concept wrong. Could anybody point me into the correct directions?&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Answer&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It's good to understand the concept of Domain first. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Domain is the parent of a Cluster. It contains typically one Admin and one or more Managed servers.&lt;br /&gt;Now the Cluster is a grouping of some or all of these managed servers within the domain.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This &lt;a href="http://download.oracle.com/docs/cd/E13222_01/wls/docs90/domain_config/understand_domains.html#1101988" rel="nofollow"&gt;diagram here should  help understanding&lt;/a&gt; the relation between Domains and Clusters&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Once you configure a Domain and a Cluster yourself on a development environment, you'll get to know more about it.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now here are the answers to your specific questions&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•a cluster contains one or more&lt;br /&gt;  logical servers which can reside on&lt;br /&gt;  one or many physical servers&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;True. But let's clarify what you mean by 'logical' servers. &lt;br /&gt;In the Cluster you typically have two or more Managed servers. These servers run in their own JVMs and can be started independently and serve requests independently. Each server will have a unique IP:port address, and it can be directly accessed from the browser. But these server instances can reside over multiple physical servers.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•when deploying a j2ee app to a&lt;br /&gt;  cluster, it is tied to one server in&lt;br /&gt;  that cluster&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;No it is not tied to one server. &lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/features.html#wp1007508" rel="nofollow"&gt;When you deploy a J2EE app to the Cluster&lt;/a&gt;, it will get deployed in turn to each server in that cluster. The JNDI is cluster-wide and each server maintains a local copy of the JNDI.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can look up the object (say an EJB) via JNDI on the Cluster or on the individual server. Also see &lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/overview.html#wp1000583" rel="nofollow"&gt;what types of Objects can be clustered&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•external users of the deployed app&lt;br /&gt;  aren't aware of clustering&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;True. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But in this case you should have an Apache web server or a load balancer or DNS server which takes the request from the browser, and internally maps it to one of the servers in the cluster. If you dont have any of these, you would have to define the cluster address as a DNS name or IP address for the client. See the section "Avoiding Listen Address Problems " on &lt;a href="http://download.oracle.com/docs/cd/E13222_01/wls/docs103/cluster/setup.html#wp682940" rel="nofollow"&gt;http://download.oracle.com/docs/cd/E13222_01/wls/docs103/cluster/setup.html#wp682940&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•the log file of that app is located&lt;br /&gt;  on the server it's deployed&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;True, one weblogic log per server.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•if the server hosting the app fails,&lt;br /&gt;  it's okay because the app is in a&lt;br /&gt;  cluster and another server will pick&lt;br /&gt;  up the work?&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Not by default, you have to configure it for failover and replication.  This is &lt;a href="http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/failover.html" rel="nofollow"&gt;a huge topic which needs separate&lt;/a&gt; reading&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;•if the server hosting the app fails,&lt;br /&gt;  what happens to logging?&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Logging stops. You'll see some shutdown or heartbeat errors in the log, or outofmemory or whatever reason for failure. you'll have to restart the server - and logging continues in a new file (depending on your logging settings)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My original answer is here on &lt;a href="http://stackoverflow.com/questions/3883516/how-does-weblogic-clustering-work/3887979#3887979"&gt;stackoverflow&lt;/a&gt; for those interested.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-3928064265796299065?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/3928064265796299065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2010/10/some-info-on-weblogic-clustering.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/3928064265796299065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/3928064265796299065'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2010/10/some-info-on-weblogic-clustering.html' title='Some info on Weblogic clustering'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7159430988535272677</id><published>2010-02-17T05:12:00.000-08:00</published><updated>2010-02-26T04:51:01.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Weblogic JDK 1.6 Error Could not reserve enough space for object heap</title><content type='html'>Weblogic 10 running on HP-UX throws this error on startup when we try to give 3 GB Xms and Xmx.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-Dweblogic.system.BootIdentityFile=/portalapp/bea/user_projects/domains/MSD4/servers/MS4/data/nodemanager/boot.properties -Dweblogic.nodemanager.ServiceEnabled=true -Dweblogic.security.SSL.ignoreHostnameVerification=false -Dweblogic.ReverseDNSAllowed=false -server -Xms3g -Xmx3g -Xmn1024m -XX:+AggressiveHeap -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:MaxTenuringThreshold=3 -XX:LargePageSizeInBytes=4m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:-UseAdaptiveSizePolicy -Xloggc:/portal_logs/gclog/MS4_gclog.log weblogic.Server &gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Feb 17, 2010 10:56:06 AM&gt; &amp;lt;Info&gt; &amp;lt;NodeManager&gt; &amp;lt;Working directory is "/portalapp/bea/user_projects/domains/MSD4"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Feb 17, 2010 10:56:06 AM&gt; &amp;lt;Info&gt; &amp;lt;NodeManager&gt; &amp;lt;Server output log file is "/portalapp/bea/user_projects/domains/MSD4/servers/MS4/logs/MS4.out"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc0000;"&gt;Error occurred during initialization of VM&lt;br /&gt;Could not reserve enough space for object heap&lt;br /&gt;Could not create the Java virtual machine.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&amp;lt;Feb 17, 2010 10:56:06 AM&gt; &amp;lt;Debug&gt; &amp;lt;NodeManager&gt; &amp;lt;Waiting for the process to die: 13663&gt;&lt;br /&gt;&amp;lt;Feb 17, 2010 10:56:06 AM&gt; &amp;lt;Info&gt; &amp;lt;NodeManager&gt; &amp;lt;Server failed during startup so will not be restarted&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Additional information:&lt;br /&gt;&lt;br /&gt;os.name = HP-UX&lt;br /&gt;os.version = B.11.31&lt;br /&gt;&lt;br /&gt;java.version = 1.6.0.04&lt;br /&gt;java.vm.info = mixed mode&lt;br /&gt;java.vm.name = Java HotSpot(TM) Server VM&lt;br /&gt;java.vm.specification.name = Java Virtual Machine Specification&lt;br /&gt;java.vm.specification.vendor = Sun Microsystems Inc.&lt;br /&gt;java.vm.specification.version = 1.0&lt;br /&gt;java.vm.vendor = "Hewlett-Packard Company"&lt;br /&gt;java.vm.version = 11.3-b02-jre1.6.0.04-rc2&lt;br /&gt;java.runtime.version = 1.6.0.04-jinteg_28_apr_2009_04_46-b00&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Analysis:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Though we are using a 64-bit server which has 16 GB RAM, we are unable to assign more than 2 Gb to the Weblogic heap.&lt;br /&gt;&lt;br /&gt;This value in the startup log shows that the JVM is a 32-bit one.&lt;br /&gt;&lt;br /&gt;sun.arch.data.model = 32&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In a 32-bit JVM – the process cannot address memory higher than 4 GB in all. But as per Sun site, in reality we cannot get more than 2G.&lt;br /&gt;&lt;br /&gt;As per this URL: http://java.sun.com/docs/hotspot/HotSpotFAQ.html#gc_heap_32bit&lt;br /&gt;&lt;br /&gt;Why can't I get a larger heap with the 32-bit JVM? &lt;br /&gt;&lt;br /&gt;The maximum theoretical heap limit for the 32-bit JVM is 4G. Due to various additional constraints such as available swap, kernel address space usage, memory fragmentation, and VM overhead, in practice the limit can be much lower. On most modern 32-bit Windows systems the maximum heap size will range from 1.4G to 1.6G. On 32-bit Solaris kernels the address space is limited to 2G.&lt;br /&gt;&lt;br /&gt;So we tuned the heap to 2 GB for now. i.e. set Xmx and Xms to 2G and that solved it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7159430988535272677?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7159430988535272677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2010/02/weblogic-jdk-16-error-could-not-reserve.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7159430988535272677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7159430988535272677'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2010/02/weblogic-jdk-16-error-could-not-reserve.html' title='Weblogic JDK 1.6 Error Could not reserve enough space for object heap'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-6101330524570718276</id><published>2010-02-12T22:05:00.000-08:00</published><updated>2010-03-15T16:49:22.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='app server'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>More tuning tips on slow Weblogic 10</title><content type='html'>&lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html"&gt;In the earlier parts of this article &lt;/a&gt;I described some technical tuning tips specific to a slow-performing Weblogic JEE server.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-jsp-and-servlet.html"&gt;Another earlier post&lt;/a&gt; has looked at how to set the JSP check seconds values.&lt;br /&gt;&lt;br /&gt;This is a follow-up article specifically for tuning the similar settings for Weblogic 10 - since the syntax has changed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In weblogic.xml, ensure the following are set as below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;wls:session-descriptor&gt;&lt;br /&gt;&amp;lt;wls:encode-session-id-in-query-params&gt;true&amp;lt;/wls:encode-session-id-in-query-params&gt;&lt;br /&gt;&amp;lt;wls:cookie-comment&gt;mysessioncookie&amp;lt;/wls:cookie-comment&gt;&lt;br /&gt;&amp;lt;wls:cookie-max-age-secs&gt;-1&amp;lt;/wls:cookie-max-age-secs&gt;&lt;br /&gt;&amp;lt;wls:cookie-name&gt;JSESSIONID&amp;lt;/wls:cookie-name&gt;&lt;br /&gt;&amp;lt;wls:cookie-path&gt;/&amp;lt;/wls:cookie-path&gt;&lt;br /&gt;&amp;lt;wls:cookies-enabled&gt;true&amp;lt;/wls:cookies-enabled&gt;&lt;br /&gt;&amp;lt;wls:timeout-secs&gt;1200&amp;lt;/timeout-secs&gt;&lt;br /&gt;&amp;lt;wls:cookie-domain&gt;@MY_COOKIE_DOMAIN@&amp;lt;/wls:cookie-domain&gt;&lt;br /&gt;&amp;lt;/wls:session-descriptor&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Assuming that no JSPs are being hot deployed or dropped directly into the production server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;wls:jsp-descriptor&gt;&lt;br /&gt;&amp;lt;wls:keepgenerated&gt;true&amp;lt;/wls:keepgenerated&gt;&lt;br /&gt;&amp;lt;wls:precompile&gt;true&amp;lt;/wls:precompile&gt;&lt;br /&gt;&amp;lt;wls:page-check-seconds&gt;-1&amp;lt;/wls:page-check-seconds&gt;&lt;br /&gt;&amp;lt;/wls:jsp-descriptor&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and this one&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;wls:container-descriptor&gt;&lt;br /&gt;&amp;lt;wls:servlet-reload-check-secs&gt;-1&amp;lt;/wls:servlet-reload-check-secs&gt;&lt;br /&gt;&amp;lt;/wls:container-descriptor&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ensure all of these are inserted at the right place within the weblogic.xml to avoid any start up error messages&lt;br /&gt;&lt;br /&gt;Check against the reference here http://download.oracle.com/docs/cd/E12840_01/wls/docs103/webapp/weblogic_xml.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-6101330524570718276?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/6101330524570718276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2010/02/more-tuning-tips-on-slow-weblogic-10.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/6101330524570718276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/6101330524570718276'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2010/02/more-tuning-tips-on-slow-weblogic-10.html' title='More tuning tips on slow Weblogic 10'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7997985017168879476</id><published>2010-01-23T20:27:00.001-08:00</published><updated>2010-01-23T20:52:51.674-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='new zealand'/><title type='text'>Postcards from New Zealand</title><content type='html'>I spent 2 months on a client assignment in New Zealand last year. The summer was a great time to be there and here are some pictures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Auckland skyline&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vNcLLQAhI/AAAAAAAAAEk/N9lctxa2ooY/s1600-h/DSC00110.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vNcLLQAhI/AAAAAAAAAEk/N9lctxa2ooY/s400/DSC00110.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430159659645272594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looking up at the SkyCity Tower Auckland&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ER-q_TZ-wqk/S1vNjPKl3uI/AAAAAAAAAEs/EzgnUx8wVCw/s1600-h/DSC00095.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/S1vNjPKl3uI/AAAAAAAAAEs/EzgnUx8wVCw/s400/DSC00095.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430159780975337186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cathedral Cove in the North Island &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vMtQMKPWI/AAAAAAAAAEc/c8JG8ubcFX4/s1600-h/DSC00233.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vMtQMKPWI/AAAAAAAAAEc/c8JG8ubcFX4/s400/DSC00233.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430158853537414498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View of Auckland from Waiheke Island&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vMhnOs7CI/AAAAAAAAAEU/faSZyzbVDIo/s1600-h/DSC00133.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vMhnOs7CI/AAAAAAAAAEU/faSZyzbVDIo/s400/DSC00133.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430158653563661346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Cruise on Milford Sound in the South Island. The view ahead is the Trans Tasman Sea.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vO6nHKMuI/AAAAAAAAAE0/gZ0KyHZxUtU/s1600-h/DSC00388.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vO6nHKMuI/AAAAAAAAAE0/gZ0KyHZxUtU/s400/DSC00388.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430161282052010722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The seals at Milford Sound&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vPKMBaE3I/AAAAAAAAAE8/iiJS8zMfI6I/s1600-h/DSC00410.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vPKMBaE3I/AAAAAAAAAE8/iiJS8zMfI6I/s400/DSC00410.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430161549658035058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Birds at Queenstown&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vPZCTfNZI/AAAAAAAAAFE/C3--nWkl6LA/s1600-h/DSC00501.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vPZCTfNZI/AAAAAAAAAFE/C3--nWkl6LA/s400/DSC00501.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430161804747552146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lake Pukaki on the way to Mount Cook&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vPk_en76I/AAAAAAAAAFM/3sTtLsSFo9E/s1600-h/DSC00550.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 243px;" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/S1vPk_en76I/AAAAAAAAAFM/3sTtLsSFo9E/s400/DSC00550.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430162010147385250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View of Mount Cook from Lake Tekapo&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vPwDh8z2I/AAAAAAAAAFU/5MUSJY2JGaI/s1600-h/DSC00582.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vPwDh8z2I/AAAAAAAAAFU/5MUSJY2JGaI/s400/DSC00582.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430162200213639010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The Church of Good Shephed on the shores of &lt;a href="http://en.wikipedia.org/wiki/Lake_Tekapo"&gt;Lake Tekapo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vP_0xQl8I/AAAAAAAAAFc/wadO4fC6KL0/s1600-h/DSC00633.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vP_0xQl8I/AAAAAAAAAFc/wadO4fC6KL0/s400/DSC00633.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430162471129225154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View of Lake Tekapo from Mount John Observatory&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vQG0YVIzI/AAAAAAAAAFk/ESsPM5WQdbw/s1600-h/DSC00640.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vQG0YVIzI/AAAAAAAAAFk/ESsPM5WQdbw/s400/DSC00640.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430162591283749682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Two men playing chess at Christchurch City Centre. Let me know if it's you :) &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vRaOy_YEI/AAAAAAAAAFs/W_HwRc7dr4Q/s1600-h/DSC00679.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 322px;" src="http://1.bp.blogspot.com/_ER-q_TZ-wqk/S1vRaOy_YEI/AAAAAAAAAFs/W_HwRc7dr4Q/s400/DSC00679.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5430164024304033858" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7997985017168879476?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7997985017168879476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2010/01/postcards-from-new-zealand.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7997985017168879476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7997985017168879476'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2010/01/postcards-from-new-zealand.html' title='Postcards from New Zealand'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ER-q_TZ-wqk/S1vNcLLQAhI/AAAAAAAAAEk/N9lctxa2ooY/s72-c/DSC00110.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-869178705483859824</id><published>2009-08-06T05:04:00.000-07:00</published><updated>2010-02-16T17:23:46.099-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='frequent GC'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM crash'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Weblogic JMS Performance Tuning Tips</title><content type='html'>Here are a couple of real-life tips on tuning JMS performance.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br /&gt;The creates and sends JMS messages on an outgoing queue for consumption by another application.&lt;br /&gt;&lt;br /&gt;It was observed that when the consuming application was offline for a period of time the number of messages that could be retained on the queue before the JVM heap was filled up was quite low.  This was tested to be roughly 7000 messages, after which OutOfMemory exceptions begin to occur. Given that the consuming application could realistically be offline for a period, hence the use of an asynchronous queue, we needed to increase the number of messages that could realistically be stored in the  queue.&lt;br /&gt;&lt;br /&gt;The exception we get is shown below:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Start server side stack trace:&lt;br /&gt;java.lang.OutOfMemoryError:&lt;br /&gt;&lt;br /&gt;Start server side stack trace:&lt;br /&gt;java.lang.OutOfMemoryError&lt;br /&gt;        &amp;lt;&amp;lt;no stack trace available&gt;&gt;&lt;br /&gt;End  server side stack trace&lt;br /&gt;        at weblogic.rmi.internal.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:109)&lt;br /&gt;       at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:127)&lt;br /&gt;       at weblogic.jms.dispatcher.DispatcherImpl_WLStub.dispatchSyncFuture(Unknown Source)&lt;br /&gt;       at weblogic.jms.dispatcher.DispatcherWrapperState.dispatchSync(DispatcherWrapperState.java:286)&lt;br /&gt;       at weblogic.jms.client.JMSSession.createProducer(JMSSession.java:1484)&lt;br /&gt;       at weblogic.jms.client.JMSSession.createSender(JMSSession.java:1335)&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The GC logs also show frequent Full GCs before the server goes out of memory.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Solution Steps:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Enabling JMS Paging&lt;br /&gt;&lt;br /&gt;Paging had not been enabled for the queue. Despite this queue being persistent, this meant that every message was stored in the JVM memory heap in its entirety. Enabling message paging for this queue means that only the headers for paged messages are kept in memory, significantly reducing the amount heap utilized.&lt;br /&gt;&lt;br /&gt;As the messages were being persisted via a JDBCStore to a database, this functioned as a paging store as well, however a FileStore must still be specified as the paging store for the JMS Server, or the JMS Server will not deploy at WLS server start time. This would be due to the need to cater for any non-persistent destinations when paging is enabled. If non-persistent messages are not paged, the size of this FileStore will be negligible. Paged messages still occupy some space on the memory heap as the message headers are still kept in memory.&lt;br /&gt;&lt;br /&gt;On enabling paging for the specific queue, the test could cater for roughly 15000 messages before OutOfMemory exceptions occurred. The point at which paging began was set deliberately low to 100. Recovering from the page store does incur a certain performance cost, so in Production this was set to a more reasonable number based on the peak number of messages expected in the queue under normal conditions.&lt;br /&gt;&lt;br /&gt;Despite the gain in number of messages that could be catered for, the heap utilisation graphs were very similar to those before paging was enabled. This showed no minor GCs, only full GCs at fairly frequent intervals.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. JVM Settings and Garbage Collection Tuning&lt;br /&gt;&lt;br /&gt;The untuned JVM heap size was 512Mb. This value could be increased, but test results after tuning the JVM settings indicate that this was probably more than adequate.&lt;br /&gt;&lt;br /&gt;Examining the current JVM settings uncovered some settings that needed to be changed. &lt;br /&gt;&lt;br /&gt;The most significant issue with the JVM settings was the NewSize value. This was set very high to 384Mb out of the total heap of 512 Mb. &lt;br /&gt;A reasonable New Generation area would normally be 20-25% of the total heap size and setting it larger than the Tenured Generation area is guaranteed to cause unhealthy GC operations. In addition, it is good practice to use NewRatio rather than NewSize to avoid fixing an absolute size. A NewRatio of 3 (1:3, i.e. 25% of heap) or 4 is considered the most appropriate for WebLogic Server applications. NewSize was therefore dropped and a NewRatio was set to 4 (20% of total heap).&lt;br /&gt;&lt;br /&gt;The SurvivorRatio value was set to a reasonable value of 3. &lt;br /&gt;TargetSurvivorRatio, however, was unset meaning that the default of 50 applies. 80 would probably be a better setting, meaning that the switch between survivor spaces in the JVM heap would occur at 80% rather than 50%. The performance improvement from this should be noticeable in the frequency of minor GC, though not dramatic.&lt;br /&gt;&lt;br /&gt;The PermSize values were high, with PermSize and MaxPermSize both set to 384Mb. These were reduced to 64Mb and 128Mb respectively, which should be more than adequate. Though these changes are unlikely to improve performance, having the PermSize set to high will needlessly consume memory.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The effect of setting a good NewRatio value was dramatic.&lt;/strong&gt; Many minor GCs were the rule, with infrequent full GCs. 60,000 messages were added to the queue before the heap was approaching full. We ran an overnight, and somewhere between 60,000 and 70,000 messages the OutOfMemory exceptions occurred.&lt;br /&gt;&lt;br /&gt;Scaling this up to the Production environment which has 1Gb Heap, shows that the server could easily cater for the expected load.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-869178705483859824?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/869178705483859824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/08/weblogic-jms-performance-tuning-tips.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/869178705483859824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/869178705483859824'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/08/weblogic-jms-performance-tuning-tips.html' title='Weblogic JMS Performance Tuning Tips'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-3870458035603763027</id><published>2009-07-20T01:45:00.000-07:00</published><updated>2010-04-24T22:10:05.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dave matthews'/><category scheme='http://www.blogger.com/atom/ns#' term='big whiskey and the groogrux king'/><category scheme='http://www.blogger.com/atom/ns#' term='DMB'/><title type='text'>Dave Matthews Band - Big Whiskey and the Groogrux King</title><content type='html'>My favourite group, &lt;a href="http://www.davematthewsband.com/"&gt;Dave Matthews Band &lt;/a&gt;released their 7th studio album - &lt;strong&gt;"Big Whiskey and the Groogrux King"&lt;/strong&gt;. I feel this is their best album since 1998's "Before These Crowded Streets" with them going back to their jamming style of music rather than the manufactured pop sounds of recent albums.&lt;br /&gt;The name is a tribute to founding member and saxophonist &lt;a href="http://en.wikipedia.org/wiki/LeRoi_Moore"&gt;LeRoi Moore &lt;/a&gt;who died in August 2008 and his nickname was Groogrux. A few of the songs on the album have references to LeRoi and show that the band really miss their mate. The cover portrays Moore's head on a float in the Mardi Gras procession in New Orleans.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SmQz3vRp1gI/AAAAAAAAAEA/E96rDUXtsIE/s1600-h/200px-BigWhiskeyGroogruxKing.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5360466489154065922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SmQz3vRp1gI/AAAAAAAAAEA/E96rDUXtsIE/s400/200px-BigWhiskeyGroogruxKing.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The album begins with a short and lovely saxphone solo &lt;strong&gt;"Grux"&lt;/strong&gt; - recorded by LeRoi before his death.&lt;br /&gt;&lt;br /&gt;This is the prelude to the first song &lt;strong&gt;"Shake Me Like a Monkey"&lt;/strong&gt; which is one of the outstanding tracks. The lyrics exhort a babe so hot "&lt;em&gt;that God and the devil alone could not have made you up. Two must have worked as one&lt;/em&gt;" to "&lt;em&gt;Love Me Baby Shake Me Like a Monkey&lt;/em&gt;". and this gem "&lt;em&gt;I like my coffee with toast and jelly. But I'd rather be licking from your back to your belly&lt;/em&gt;". Very peppy and a kick-ass blast this song is.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Funny the Way It Is"&lt;/strong&gt; is a poem showing the same events has opposite effects on different people. "&lt;em&gt;Hear the laughter while the children play war&lt;/em&gt;" and "&lt;em&gt;Funny the way it is, If you think about it, One kid walks ten miles to school, another's dropping out&lt;/em&gt;"&lt;br /&gt;The words remind me of Alanis Morissette's "Ironic" and the tune is simple and catchy with subtle violin at the start and a full blooded violin interlude in the middle with strong rock guitar riffs. I think this song also shows the band misses LeRoi with this line "&lt;em&gt;Somebody's heart is broken and it becomes your favorite song&lt;/em&gt;". I dont like the video too much though. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The third song &lt;strong&gt;"Lying in the Hands of God"&lt;/strong&gt; is a slow ballad with a simple arrangement. Hummable with reflective lyrics. This song grows on you with it's slow guitar rounding off - and you can picture yourself looking into a fading sunset with a drink in hand.&lt;br /&gt;&lt;br /&gt;Then there's another decibel upping blast &lt;strong&gt;"Why I Am"&lt;/strong&gt; - starts off with a full-on drums and guitar rolls and is definitely again a tibute to LeRoi "&lt;em&gt;Why I am still here dancing with the GrooGrux King, We’ll be drinking Big Whiskey while we dance and sing&lt;/em&gt;" and you do want to tap along with the dance. This is surely an instant hit.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Dive In"&lt;/strong&gt; is my 2nd favourite song on the album - the one I loved as soon I heard it. It starts on a slow note but &lt;a href="http://en.wikipedia.org/wiki/Dave_Matthews"&gt;Dave &lt;/a&gt;sounds hypnotical in the lilting tune singing an ode to all things Summer - Summer games, Summer breeze, Summer girls, Summer dresses - "&lt;em&gt;Kick off your shoes, dive in the empty ocean". "Wake up sleepy head, I think the suns a little brighter today&lt;/em&gt;". It surely is guys - after listening to this - my day has brightened. Wake up and enjoy it while it lasts cause it wont last forever - is the message here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Spaceman"&lt;/strong&gt; is an okay song compared to the others. If it were on one of the weaker earlier albums, Busted Stuff [2002] or Stand Up [2005], this might have been rated higher but for me, it just makes up the numbers on this album. the lyrics are about a guy's love for his girl, even when things dont work out.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Squirm"&lt;/strong&gt; is quite unusual and surprising. It starts off slow but punches you when Dave gets a bit menacing and the crescendo builds as he sings "&lt;em&gt;Drumbeats louder (x 4)&lt;/em&gt;". He gets ferocious on the "&lt;em&gt;Open up your head&lt;/em&gt;" chorus. Parts of it almost feels like a song by U2, I can imagine Bono cooing in falsetto between the climactic violin and drum rolls, and it blends in what sounds quite Middle Eastern wailing for the finale. There's much more meaning to these lyrics with it's referring to (lack of) Faith and the differences in Religions and the inevitable End. But I love the song for it's music rather than it's philosophy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Alligator Pie (Cockadile)"&lt;/strong&gt; is my favourite song on the album. It's arranged chaos is sublime - listen closely for the dog barking just before the violin in the beginning and Dave's own howling bringing in the vocals. This song will get your feet tapping with the banjo driving the entire melody. On the face of it, this is a song for his daughter Stella asking "&lt;em&gt;Daddy when you going to put me in a song&lt;/em&gt;" since many earlier songs have referenced her twin sister Grace. (Yup, even I dont get why didnt her put her in a song earlier) But Dave's also pushes in a critical reference to the Bush administration's response to the Hurrican Katrina devestation of New Orleans. The song proceeds into a lovely cacophony with Dave almost yelping through the words. My only complaint is it ended too soon at 3:57 mins. The title word "cockadile" is the child's pronunciation of "crocodile" but I did not hear the word used in the song. Must be an in-family joke.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Seven"&lt;/strong&gt; begins with a heavy guitar sound almost like Pearl Jam and then moves into another jamming event. Most of the song is in falsetto with plenty of naughty lyrics. I wonder if the title itself alludes to The Seven Minutes- the novel by Irving Wallace. But it's fun to hear this all the same - and you'll start humming it in no time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Time Bomb"&lt;/strong&gt; begins so similar to "The Dreaming Tree" from "Before These Crowded Streets". Soft alto saxophone and ballady tune "&lt;em&gt;I'm a ticking time bomb Waiting to blow my top&lt;/em&gt;" and - Woah it explodes into a powerful metal guitar as if Metallica guested on this after 2:40 mins. Dave's shouting out angrily and covered by a strong trumpet "&lt;em&gt;I want to pick up the pieces, Hammer in the final nail, I wanna believe in Jesus&lt;/em&gt;". Yes this is a dark song about death and killing and the purpose of it all. This song echoes very strongly in your heart if you have experienced loss - either by death or a failed relationship.&lt;br /&gt;I feel the subtext here is on the existence of God and whether we are controlled by a higher power "&lt;em&gt;If Martians fell from the sky what would that do to God? &lt;/em&gt;". &lt;br /&gt;&lt;br /&gt;When you're recovering from that rant, the soft guitar chimes in like a refreshing glass of chilled water and thats the opening of &lt;strong&gt;"My Baby Blue"&lt;/strong&gt;. This is the best ballad on the album - a love song dedicated to the one true love who he seems to have lost "&lt;em&gt;Holding tight to the legs of all your angels, Goodbye my love &lt;/em&gt;". Talking about the blue eyes, I feel though this is about loss, it's not dedicated to LeRoi, and there are some forums suggesting this is about his sister's death. In a way this seems like he is at peace with the loss that was experienced in "Time Bomb". This is an 'easy listening' track for Pop fans.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"You and Me"&lt;/strong&gt; is another simple and easy ballad. This is probably a dedication to his wife - "&lt;em&gt;When the kids are old enough we're gonna teach them how to fly. You and me together, We can do anything baby&lt;/em&gt;". This is mostly in acoustic guitar and rounds off the album on a soft note.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes - This is a lovely collection and took some time coming.&lt;br /&gt;&lt;br /&gt;Cheers to Dave, LeRoi, Stefan Lessard, Carter Beauford, Boyd Tinsley, Jeff Coffin and Tim Reynolds with a Big Whiskey in hand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-3870458035603763027?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/3870458035603763027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/07/dave-matthews-band-big-whiskey-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/3870458035603763027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/3870458035603763027'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/07/dave-matthews-band-big-whiskey-and.html' title='Dave Matthews Band - Big Whiskey and the Groogrux King'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ER-q_TZ-wqk/SmQz3vRp1gI/AAAAAAAAAEA/E96rDUXtsIE/s72-c/200px-BigWhiskeyGroogruxKing.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-456121134836783105</id><published>2009-07-13T22:53:00.000-07:00</published><updated>2009-08-05T05:13:18.080-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='frequent GC'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM crash'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>JVM Tuning from the Trenches</title><content type='html'>This article is a follow-up to &lt;a href="http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html"&gt;http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html&lt;/a&gt;. Please read that one first for the basics on JVM heap, parameters and flags.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;br /&gt;Platform running Weblogic 8.1 on Sun V880 servers. Total RAM of 32 Gb on the machine.&lt;br /&gt;2 Gb assigned to the managed server JVM heap. JDK 1.4 &lt;br /&gt;&lt;br /&gt;Initial settings:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-XX:+AggressiveHeap -Xms2048m -Xmx2048m  -XX:SurvivorRatio=32 -XX:MaxPermSize=128m &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But still there are 20 Full GCs per hour in peak times, before the server crashes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Analysis&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. It was decided to reduce the SurvivorRatio to 4 and restart with some more flags. &lt;br /&gt;&lt;br /&gt;The size of ONE Survivor Space is calculated as&lt;br /&gt;&lt;br /&gt;SurvivorSpace = NewSize / (SurvivorRatio + 2) &lt;br /&gt;&lt;br /&gt;Keeping SurvivorRatio as 32 means the Survivor spaces are too small for promoting stuff from Eden. Hence we reduce this to 4 which allows for larger Survivor spaces.&lt;br /&gt;&lt;br /&gt;2. As per Sun Bug ID: 6218833, setting AggressiveHeap set before Heapsize (Xmx and Xms) can confuse the JVM. Revert the order to have -Xms and -Xmx to come before  -XX:+AggressiveHeap or not use it&lt;br /&gt;&lt;br /&gt;3. The application has 180+ EJBs with pools of beans. Hence set the -Dsun.rmi.dgc.client.gcInterval=3600000 (1 hour) instead of the default 60000 (1 min). More on this here: http://docs.sun.com/source/817-2180-10/pt_chap5.html&lt;br /&gt;&lt;br /&gt;4. The site is restarted once a week at 4:30AM. The patterns stays normal for 2 days – and then degrades into full GC.&lt;br /&gt;&lt;br /&gt;5. The Old space is pretty much full – at every minor collection – the Old space must be cleared up for promotion from Young to Old to take place.&lt;br /&gt;&lt;br /&gt;6. Permanent space is pretty much full – keeps loading classes and classes ( could that be a problem – the difference between the number of JSP’s per Release?)&lt;br /&gt;Hence we increased the PermSpace from 128M to 256M&lt;br /&gt;&lt;br /&gt;7. Ensure we are running the server JVM by using the -server flag&lt;br /&gt;&lt;br /&gt;8. Use OptimizeIt or similar profiling tool to see the memory usage and find code bottlenecks. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The settings now were&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;-server -Xms2048m -Xmx2048m  -XX:MaxNewSize=512m -XX:NewSize=512m -XX:SurvivorRatio=4 -XX:MaxPermSize=256m -Xincgc -XX:+DisableExplicitGC -XX:+AggressiveHeap -XX:-OmitStackTraceInFastThrow&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p/&gt;&lt;br /&gt;This reduced the Full GCs to one a day.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error Logs&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;At the time of the server going out of memory prior to a crash, the logs are filled with repeated errors (up to 100 repetitions) of this sort&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java.lang.NullPointerException&lt;br /&gt; &amp;lt;&amp;lt;no stack trace available&gt;&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Adding the -XX:-OmitStackTraceInFastThrow flag resolves this problem, the root cause of the NPE it self has to be tracked down but we do not have any longer the issue of huge recursive exception strings.&lt;br /&gt;&lt;br /&gt;We could now see the stack trace as&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;java.lang.NullPointerException&lt;br /&gt; at java.util.StringTokenizer.&lt;init&gt;(StringTokenizer.java:117)&lt;br /&gt; at java.util.StringTokenizer.&lt;init&gt;(StringTokenizer.java:133)&lt;br /&gt; at jsp_servlet._framework._security.__login._jspService(login.jsp:294)&lt;br /&gt; at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)&lt;br /&gt; at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1075)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This seems to be a &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4479571"&gt;Sun bug described here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-456121134836783105?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/456121134836783105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/07/jvm-tuning-from-trenches.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/456121134836783105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/456121134836783105'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/07/jvm-tuning-from-trenches.html' title='JVM Tuning from the Trenches'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2614122736588906584</id><published>2009-07-07T02:12:00.000-07:00</published><updated>2009-08-05T22:54:16.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='muxer'/><category scheme='http://www.blogger.com/atom/ns#' term='file descriptor'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='FD'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='socket muxer'/><title type='text'>More on Weblogic Muxers</title><content type='html'>This is a follow-up to an earlier article &lt;a href="http://jojovedder.blogspot.com/2009/05/weblogic-socket-muxers-are-not-stuck.html"&gt;which detailed the Weblogic Socket Muxer pattern in &lt;/a&gt;thread dumps.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another ERROR pattern associated with Muxers is shown below&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;####&amp;lt;Jun 23, 2009 9:25:24 AM BST&gt; &amp;lt;Error&gt; &amp;lt;Socket&gt; &amp;lt;d001&gt; &amp;lt;managed1&gt; &amp;lt;ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'&gt; &amp;lt;&amp;lt;WLS Kernel&gt;&gt; &lt;br /&gt; &amp;lt;BEA-000403&gt; &amp;lt;IOException occurred on socket: Socket[addr=/10.23.22.1,port=1950,localport=61002]&lt;br /&gt; java.net.SocketException: Connection refused.&lt;br /&gt;java.net.SocketException: Connection refused&lt;br /&gt;        at java.net.SocketInputStream.socketRead0(Native Method)&lt;br /&gt;        at java.net.SocketInputStream.read(SocketInputStream.java:129)&lt;br /&gt;        at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:672)&lt;br /&gt;        at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:648)&lt;br /&gt;        at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:123)&lt;br /&gt;        at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html"&gt;written in an earlier post&lt;/a&gt;, each incoming request on a TCP socket uses one File Descriptor. &lt;br /&gt;&lt;br /&gt;We monitored the File Descriptors available to this Weblogic server using&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;Here the Weblogic pid = 8359&lt;br /&gt;&lt;br /&gt;/usr/proc/bin/pfiles 8359 | grep rlimit&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1024&lt;br /&gt;&lt;br /&gt;ls /proc/8359/fd | wc –l&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;140&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first command shows that 1024 FDs are allocated to this process, and the second shows how many are being used in real-time.&lt;br /&gt;&lt;br /&gt;A plot of the second value during high load times shows the FDs go up to 900+ in use and hence a resolution used in this case is to increase the number of FDs.&lt;br /&gt;&lt;br /&gt;A recommended value is to increase it to 8192.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2614122736588906584?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2614122736588906584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/07/more-on-weblogic-muxers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2614122736588906584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2614122736588906584'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/07/more-on-weblogic-muxers.html' title='More on Weblogic Muxers'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-8440996230014321008</id><published>2009-06-15T01:04:00.000-07:00</published><updated>2010-02-16T23:44:47.284-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='frequent GC'/><category scheme='http://www.blogger.com/atom/ns#' term='JDK'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Slow Weblogic Part 6 - JVM Heap Analysis using GCViewer</title><content type='html'>&lt;strong&gt;Basics&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-2-overall.html"&gt;an earlier article&lt;/a&gt;, I had listed the review of JVM memory parameters as one of the important checks for tuning the JEE server platform.&lt;br /&gt;&lt;br /&gt;The basic primer for JDK 1.4 is at &lt;a href="http://java.sun.com/docs/hotspot/gc1.4.2/"&gt;http://java.sun.com/docs/hotspot/gc1.4.2/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The key points you need to know are:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Total JVM Heap = Young + Tenured(&lt;em&gt;also called Old&lt;/em&gt;)&lt;p&gt;&lt;br /&gt;Young = Eden + From (SS1) + To (SS2)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In the diagram below [taken from the Sun website], "From" and "To" are the names of the two Survivor Spaces (SS) within the "Young".&lt;br /&gt;&lt;br /&gt;Perm Space (and code cache): stores JVM’s own stuff. This is &lt;em&gt;&lt;strong&gt;outside &lt;/strong&gt;&lt;/em&gt;the Heap you assign using Xms and Xmx. A good explanation of this is available &lt;a href="http://www.unixville.com/~moazam/stories/2004/05/17/maxpermsizeAndHowItRelatesToTheOverallHeap.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The JVM Heap is at default initial 2Mb and max 64Mb (for JDK 1.4 on Solaris).&lt;br /&gt;Default Perm Size is 16MB (for JDK 1.4 on Solaris)&lt;br /&gt;The defaults change for each JDK and are different on each OS - so look up the values on the respective websites.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYCM_QawHI/AAAAAAAAADg/JNLHICkaTCA/s1600-h/Fig3.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5347464029711024242" style="WIDTH: 320px; HEIGHT: 178px" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYCM_QawHI/AAAAAAAAADg/JNLHICkaTCA/s320/Fig3.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;The ratios are as shown below&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYDBR_UwfI/AAAAAAAAADo/YP5BFw00jss/s1600-h/Fig4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5347464928092799474" style="WIDTH: 320px; HEIGHT: 178px" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYDBR_UwfI/AAAAAAAAADo/YP5BFw00jss/s320/Fig4.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now the object life cycle and garbage collection occurs like this:&lt;br /&gt;&lt;br /&gt;1. Objects when created are always first allocated to Eden.&lt;br /&gt;2. When Eden fills up, a fast but not comprehensive GC (minor collection) is run over the young generation only.&lt;br /&gt;3. All surviving objects are moved from Eden into one Survivor Space.&lt;br /&gt;4. In consequent minor collections, new objects move from Eden into the other Survivor Space, plus everything from the first Survivor Space (survivors from the previous minor collection) is also moved into the second Survivor Space. Thus one survivor should be empty at that time.&lt;br /&gt;5. When objects in Survivor Space are old enough (or survivor fills up), they are moved to Tenured. By default the long-lived objects may be copied up to 31 times between the Survivor Spaces before they are finally promoted to the Old generation.&lt;br /&gt;6. When tenured fills up, a Full GC collection is run that is comprehensive: the entire heap is analyzed, all objects that can be destroyed are killed and memory is reclaimed.&lt;br /&gt;&lt;br /&gt;Note: the above lifecycle changes slightly when advanced options such as ConcurrentMarkSweep etc are enabled.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Look Closer&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;What do these values mean ?&lt;br /&gt;&lt;br /&gt;A full list of options available at &lt;a href="http://java.sun.com/docs/hotspot/VMOptions.html"&gt;http://java.sun.com/docs/hotspot/VMOptions.html&lt;/a&gt; and &lt;a href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp"&gt;http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The absolute basic ones are listed in the table below. Note: This is for JDK 1.4&lt;br /&gt;Some of these have changed in JDK 1.6&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table bordercolor="black" cellspacing="2" cellpadding="2" border="2"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;-Xms1536m -Xmx1536m&lt;/td&gt;&lt;td&gt;These represent the total heap (minus Perm space). Xms is the Initial Heap, set to 1.5Gb in this case. Xmx is Max Heap. It is good practice to set Xms = Xmx&lt;br /&gt;The max heap is limited by the RAM available on the server&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td width="50%"&gt;-XX:NewSize=512m &lt;/td&gt;&lt;td&gt;This specifies the initial size of the Young generation,set to 512Mbin this example. It is better to set this as a percentage of the Heap using -XX:NewRatio&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:MaxNewSize=512m&lt;/td&gt;&lt;td&gt;This specifies the maximum size of the Young generation,set to 512Mbin this example. It is better to set this as a percentage of the Heap using -XX:MaxNewRatio&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:PermSize=64m -XX:MaxPermSize=128m&lt;/td&gt;&lt;td&gt;These values are the Minimum and Maximum sizes of the permanent generation heap space. Optimally, set PermSize equal to MaxPermSize to avoid heap having to be adjusted when permanent area grows. As specified earlier, this area of memory is over and above the Total Heap set using Xms&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90&lt;/td&gt;&lt;td&gt;The New generation area is divided into three sub-areas: Eden, and two survivor spaces that are equal in size. Use the -XX:SurvivorRatio=X option to configure the ratio of the Eden/survivor space size. In the above example, setting it to 8 means the ratio of Eden:SS1:SS2 is 8:1:1. So for a NewSize of 512 Mb, the two SS will be 51 Mb each, and Eden will be 512 MINUS (51 + 51) = 410 Mb.&lt;br /&gt;TargetSurvivorRatio of 90 allows 90% of the survivor spaces to be occupied instead of the default 50%, allowing better utilization of the survivor space memory.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:MaxTenuringThreshold=10&lt;/td&gt;&lt;td&gt;This switch determines how many times the objects are hopped between the Survivor spaces before getting promoted to the older generation. The default value is 31.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:+DisableExplicitGC&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -Xloggc:/log/gc.log&lt;br /&gt;&lt;/td&gt;&lt;td&gt;These are GC specific settings asking for GC details and the log file name in which these details should be captured&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;If you have an appetite for more, read this http://java.sun.com/performance/reference/whitepapers/tuning.html&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GCViewer&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This link below explains how to download and use the GCViewer tool. This is quite a useful tool for viewing the number of GCs and Full GCs and how the JVMis behaving over time.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaperformancetuning.com/tools/gcviewer/index.shtml"&gt;http://www.javaperformancetuning.com/tools/gcviewer/index.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The most important things to look at in the GCViewer analysis are the&lt;br /&gt;&lt;br /&gt;* Acc Pauses - &lt;strong&gt;Accumulated Pause Time &lt;/strong&gt;(total time app was stopped for GC).Pauses are the times when an application appears unresponsive because garbage collection is occurring&lt;br /&gt;* Total Time - Total Time the application runs.&lt;br /&gt;* Throughput - Time the application runs and is not busy with GC. &lt;em&gt;Greater than 99% is fantastic&lt;/em&gt;.Throughput is the percentage of total time not spent in garbage collection, considered over long periods of time.&lt;br /&gt;* Footprint - Overall Memory Consumption - Ideally as low as possible. This is the working set of a process, measured in pages and cache lines. On systems with limited physical memory or many processes, footprint may dictate scalability. Thus this usually reflects the size of total Heap allocated via Xms and Xmx&lt;br /&gt;&lt;br /&gt;This diagram is taken from the above site:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYN40TaKxI/AAAAAAAAADw/fdvztOT8smQ/s1600-h/Guihelp.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5347476877312928530" style="WIDTH: 400px; HEIGHT: 288px" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYN40TaKxI/AAAAAAAAADw/fdvztOT8smQ/s400/Guihelp.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tuning Example From the Trenches - Frequent GC due to Perm Space getting Full&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;JVM Parameters already set&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;java -server -Xms1024m -Xmx1024m -XX:MaxPermSize=340m -XX:NewSize=340m -XX:MaxNewSize=340m&lt;br /&gt;-XX:SurvivorRatio=9 -XX:TargetSurvivorRatio=90 -XX:+UseParNewGC&lt;br /&gt;-Xloggc:/wls_domains/gclog/jms.gc -XX:+PrintGCDetails -XX:+UseParNewGC&lt;br /&gt;-XX:+PrintGCTimeStamps -XX:+DisableExplicitGC -XX:+PrintTenuringDistribution&lt;br /&gt;-XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime&lt;br /&gt;-XX:+JavaMonitorsInStackTrace -Dweblogic.system.BootIdentityFile=/wls_domains/xx/boot.properties&lt;br /&gt;-Dweblogic.management.server=http://xx.xx.xx.xx:6000 -Dweblogic.Name=xxxxxx&lt;br /&gt;-Dweblogic.ProductionModeEnabled=true&lt;br /&gt;-Djava.security.policy=/opt/bea/wls/8.1sp4/weblogic81/server/lib/weblogic.policy&lt;br /&gt;weblogic.Server&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Full GC Pattern&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The GC log shows&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0.000: [Full GC 0.000: [Tenured: 0K-&gt;9794K(700416K), 0.8050952 secs] 134607K-&gt;9794K(1016960K), [Perm&lt;br /&gt;: 20479K-&gt;20479K(20480K)], 0.8053527 secs]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First Full GC happens at 0:00 sec from start of server. Before and after '-&gt;' figures represent size of live objects before and after GC. Number in parenthesis indicates total available space. So from above numbers - Tenured was not full but Perm was almost full.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;6579.013: [Full GC 6579.013: [Tenured: 9794K-&gt;18941K(700416K), 0.9677233 secs]&lt;br /&gt;155600K-&gt;18941K(1016960K), [Perm : 24575K-&gt;24575K(24576K)], 0.9679896 secs]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Same thing happens here. The second Full GC took place at 6579.013 sec (1hr 49mins) from startup of server.&lt;br /&gt;Again a Full GC is triggered, but the Tenured was not full. The Tenured is now 18.9 Mb out of 700 Mb - but it is seen the Perm Space has grown to 24.5 Mb and is not getting cleared.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;9363.515: [Full GC 9363.516: [Tenured: 18941K-&gt;19463K(700416K), 0.6532332 secs] 36950K-&gt;19463K(1016960K), [Perm : 28672K-&gt;26462K(28672K)], 0.6536095 secs]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At the 3rd Full GC at 9363 seconds after server startup, the Perm space grew to 28.6 Mb and recovered marginally to 26.4 Mb.&lt;br /&gt;&lt;br /&gt;Observing this over a long period of time, we concluded that at startup around 20MB is allocated to perm which with each Full GC keeps growing till 30MB and later shrinks back to 25MB and the cycle continues.&lt;br /&gt;&lt;br /&gt;The pattern is highlighted below:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;0.000: [Full GC 0.000: [Tenured: 0K-&gt;9794K(700416K), 0.8050952 secs] 134607K-&gt;9794K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 20479K-&gt;20479K(20480K)&lt;/span&gt;], 0.8053527 secs]&lt;br /&gt;6579.013: [Full GC 6579.013: [Tenured: 9794K-&gt;18941K(700416K), 0.9677233 secs] 155600K-&gt;18941K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 24575K-&gt;24575K(24576K)],&lt;/span&gt; 0.9679896 secs]&lt;br /&gt;9363.515: [Full GC 9363.516: [Tenured: 18941K-&gt;19463K(700416K), 0.6532332 secs] 36950K-&gt;19463K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 28672K-&gt;26462K(28672K)],&lt;/span&gt; 0.6536095 secs]&lt;br /&gt;13483.233: [Full GC 13483.233: [Tenured: 19463K-&gt;16962K(700416K), 0.9783693 secs] 26678K-&gt;16962K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 30719K-&gt;21330K(30720K)]&lt;/span&gt;, 0.9857390 secs]&lt;br /&gt;17308.829: [Full GC 17308.830: [Tenured: 16962K-&gt;17312K(700416K), 1.0578872 secs] 88025K-&gt;17312K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 25600K-&gt;25600K(25600K)]&lt;/span&gt;, 1.0581738 secs]&lt;br /&gt;21237.810: [Full GC 21237.810: [Tenured: 17312K-&gt;17814K(700416K), 1.4728764 secs] 302290K-&gt;17814K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 29695K-&gt;26719K(29696K)]&lt;/span&gt;, 1.4801234 secs]&lt;br /&gt;30079.672: [Full GC 30079.672: [Tenured: 17814K-&gt;18676K(700416K), 1.0282446 secs] 83159K-&gt;18676K(1016960K), [&lt;span style="color:#cc0000;"&gt;Perm : 30975K-&gt;27564K(30976K)]&lt;/span&gt;, 1.0349869 secs]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Though the MaxPermSize=340m is provided, initial available Perm Size is getting full and JVM is invoking a Full GC to free up memory. The default initial PermSize is 16Mb and hence the Perm Space is resizing itself as the JVM grows.&lt;br /&gt;&lt;br /&gt;Not sure if this behaviour is a bug but by adding an initial PermSize of 64K using this flag -XX:PermSize=64m resolved this issue of frequent Full GC.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; Another examples published on &lt;a href="http://jojovedder.blogspot.com/2009/07/jvm-tuning-from-trenches.html"&gt;http://jojovedder.blogspot.com/2009/07/jvm-tuning-from-trenches.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-8440996230014321008?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/8440996230014321008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/8440996230014321008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/8440996230014321008'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html' title='Slow Weblogic Part 6 - JVM Heap Analysis using GCViewer'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ER-q_TZ-wqk/SjYCM_QawHI/AAAAAAAAADg/JNLHICkaTCA/s72-c/Fig3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-237683577457607113</id><published>2009-05-17T22:47:00.000-07:00</published><updated>2011-02-16T01:50:48.580-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='muxer'/><category scheme='http://www.blogger.com/atom/ns#' term='execute thread'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='socket muxer'/><title type='text'>Weblogic - Socket Muxers in Thread Dumps</title><content type='html'>&lt;strong&gt;What are these weblogic.socket.Muxer threads seen in thread dumps ?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Note: for a basic primer on taking thread dumps and analyzing them, see &lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt;this earlier article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Socket Reader Threads accept the incoming request from the Listen Thread Queue and put it on the Execute Thread Queue.&lt;br /&gt;&lt;br /&gt;In WL 8.1, there are 3 socket reader threads by default.&lt;br /&gt;In WL 9 and 10, WebLogic allocates 33% of server threads to act as socket readers by default. This need not be changed usually.&lt;br /&gt;&lt;br /&gt;One socket reader thread is usually in the poll function, while the others are available to process requests.&lt;br /&gt;The polling thread is highlighted &lt;a href="http://www.blogger.com/posts.g?blogID=2805163882887351730&amp;amp;searchType=ALL&amp;amp;txtKeywords=&amp;amp;label=thread+dump"&gt;in the thread dump &lt;/a&gt;below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x016b2148 nid=0x42 waiting for monitor entry [5997f000..5997fc28]&lt;br /&gt;at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:91)&lt;br /&gt;- waiting to lock &lt;0x94846b40&gt; (a java.lang.String)&lt;br /&gt;at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x00683c28 nid=0x41 waiting for monitor entry [59a7f000..59a7fc28]&lt;br /&gt;at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:91)&lt;br /&gt;- waiting to lock &lt;0x94846b40&gt; (a java.lang.String)&lt;br /&gt;at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x0079e5b0 nid=0x40 runnable [59b7f000..59b7fc28]&lt;br /&gt;at &lt;span style="color:#ff0000;"&gt;weblogic.socket.PosixSocketMuxer.poll(Native Method)&lt;br /&gt;&lt;/span&gt;at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:100)&lt;br /&gt;- locked &lt;0x94846b40&gt; (a java.lang.String)&lt;br /&gt;at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In an earlier support case on Stuck Threads, we asked BEA:&lt;br /&gt;&lt;br /&gt;Should we worry about the Weblogic.socket.Muxer threads which always show 2 threads waiting for lock and 3rd thread locking the same object?&lt;br /&gt;&lt;br /&gt;The Muxer TD is attached. This shows same behaviour on all our Weblogic servers.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Full thread dump Java HotSpot(TM) Server VM (1.4.2_05-b04 mixed mode):&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x0151&lt;br /&gt;c588 nid=0x1b4 waiting for monitor entry [ad57f000..ad57fc28]&lt;br /&gt;        at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:91)&lt;br /&gt;        - waiting to lock &lt;0xd9331760&gt; (a java.lang.String)&lt;br /&gt;        at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x0161&lt;br /&gt;d608 nid=0x1b3 runnable [ad67f000..ad67fc28]&lt;br /&gt;        at weblogic.socket.PosixSocketMuxer.poll(Native Method)&lt;br /&gt;        at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:100)&lt;br /&gt;        - locked &lt;0xd9331760&gt; (a java.lang.String)&lt;br /&gt;        at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=5 tid=0x01bb&lt;br /&gt;6730 nid=0x1b2 waiting for monitor entry [ad77f000..ad77fc28]&lt;br /&gt;        at weblogic.socket.PosixSocketMuxer.processSockets(PosixSocketMuxer.java:91)&lt;br /&gt;        - waiting to lock &lt;0xd9331760&gt; (a java.lang.String)&lt;br /&gt;        at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)&lt;br /&gt;        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The reply from BEA Support was that the above pattern of weblogic.socket.Muxer threads are not a cause of stuck threads.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why do they mostly show as being Stuck in Samurai TD analyzer ? &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5337081029877841986" border="0" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/ShEe62tYQEI/AAAAAAAAADI/MazgSkaPf4I/s320/SamuraiMuxer.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As the image shows, &lt;a href="http://yusuke.homeip.net/samurai/"&gt;when you analyze thread dumps using Samurai&lt;/a&gt;, the muxer threads are shown as being Stuck since they're all locked on the same object. This is probably treated as a deadlock condition.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'"&lt;br /&gt;- &lt;span style="color:#cc0000;"&gt;waiting to lock &amp;lt;0xd9b61098&gt;&lt;/span&gt; (a java.lang.String)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'"&lt;br /&gt;- &lt;span style="color:#cc0000;"&gt;waiting to lock &amp;lt;0xd9b61098&gt;&lt;/span&gt; (a java.lang.String)&lt;br /&gt;&lt;p&gt;&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'"&lt;br /&gt;- &lt;span style="color:#cc0000;"&gt;locked &amp;lt;0xd9b61098&gt;&lt;/span&gt; (a java.lang.String)&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But you will see the same in any Thread dump even on a development instance with no requests.&lt;br /&gt;The locks mentioned do show up as red in Samurai - but they aren't deadlocks just regular locks.&lt;br /&gt;&lt;br /&gt;A thread gains an exclusive lock on an object to perform some action, then frees it allowing the next thread to gain access.&lt;br /&gt;&lt;br /&gt;Additionally, if you look at the thread dumps over time, you'll see that these specific locks are not always present - they are moving between the threads which is indicative of their transitory nature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I want to know more details on Muxers&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The socket Muxer manages the server’s existing socket connections.&lt;br /&gt;It first determines which sockets have incoming requests waiting to be processed. It then reads enough data to determine the protocol and dispatches the socket to an appropriate runtime layer based on the protocol.&lt;br /&gt;In the runtime layer, the socket muxer threads determine which execute thread queue to be used and delegates the request accordingly.&lt;br /&gt;&lt;br /&gt;From the documentation on http://edocs.bea.com/wls/docs100/perform/WLSTuning.html#wp1152246 ,&lt;br /&gt;Weblogic has two versions of the socket muxer, one is the Java version and the other uses a native library which makes better use of operating system calls. The &lt;span style="font-family:courier new;"&gt;Enable Native IO&lt;/span&gt; checkbox on the server’s configuration settings tells the server which version to use. This is ON by default for most platforms.&lt;br /&gt;&lt;br /&gt;Native muxers provide superior scalability because they implement a non-blocking thread model. When a native muxer is used, the server creates a fixed number of threads dedicated to reading incoming requests. Oracle recommends using the default setting of true for the &lt;span style="font-family:courier new;"&gt;Enable Native IO&lt;/span&gt; parameter which allows the server to automatically select the appropriate muxer to use.&lt;br /&gt;&lt;br /&gt;You must ensure that to use Native I/O, the native library must be present in the server’s shared library path . This is set up with the default scripts.&lt;br /&gt;When the server does not find the native library, it throws an error&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;java.lang.UnsatisfiedLinkError: no muxer in java.library.path&lt;br /&gt;&lt;/span&gt;and then loads the Java version of the muxer.&lt;br /&gt;&lt;br /&gt;Confirm the LD library path is okay and pointing to the Solaris LD path. Check the startup log when starting a managed server. What is the value of &lt;span style="font-family:courier new;"&gt;java.library.path&lt;/span&gt;?&lt;br /&gt;This is where the JVM actually get's the library from.&lt;br /&gt;&lt;br /&gt;http://m-button.blogspot.com/2008/08/how-does-weblogic-handle-socket-muxers.html has a good example of how to identify Native vs Java muxer in a thread dump.&lt;br /&gt;&lt;br /&gt;The Thread Dump I’ve used in my examples above uses the Native muxer (weblogic.socket.PosixSocketMuxer) on Solaris.&lt;br /&gt;&lt;br /&gt;Solaris has another Native muxer called the weblogic.socket.DevPollSocketMuxer&lt;br /&gt;An example TD using this muxer is shown below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '4' for queue: 'weblogic.socket.Muxer'" waiting for lock java.lang.String@4edf4f BLOCKED&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer.java:95)&lt;br /&gt;weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)&lt;br /&gt;weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)&lt;br /&gt;weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)&lt;br /&gt;weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '3' for queue: 'weblogic.socket.Muxer'" RUNNABLE native&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.doPoll(Native Method)&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer.java:96)&lt;br /&gt;weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)&lt;br /&gt;weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)&lt;br /&gt;weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)&lt;br /&gt;"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" waiting for lock java.lang.String@4edf4f BLOCKED&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer.java:95)&lt;br /&gt;weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)&lt;br /&gt;weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)&lt;br /&gt;weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)&lt;br /&gt;weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" waiting for lock java.lang.String@4edf4f BLOCKED&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer.java:95)&lt;br /&gt;weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)&lt;br /&gt;weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)&lt;br /&gt;weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)&lt;br /&gt;weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" waiting for lock java.lang.String@4edf4f BLOCKED&lt;br /&gt;weblogic.socket.DevPollSocketMuxer.processSockets(DevPollSocketMuxer.java:95)&lt;br /&gt;weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)&lt;br /&gt;weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:42)&lt;br /&gt;weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)&lt;br /&gt;weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To change the number of Muxers from the default, follow the instructions given at http://e-docs.bea.com/wls/docs92/ConsoleHelp/taskhelp/tuning/TuningSocketReaders.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://jojovedder.blogspot.com/2009/07/more-on-weblogic-muxers.html"&gt;http://jojovedder.blogspot.com/2009/07/more-on-weblogic-muxers.html&lt;/a&gt;for an update on Muxers&lt;br /&gt;&lt;br /&gt;Additionally on Oracle JRockit JVMs - there are some information in the thread dumps which point out the same problem in a different manner.&lt;br /&gt;&lt;br /&gt;After the normal stack dumps, BEA JRockit performs a deadlock detection. This is done by finding "lock chains" in the Java application. If a lock chain is found to be circular, the application is considered caught in a deadlock. &lt;br /&gt;&lt;br /&gt;A detailed explanation of the 3 types of lock chains in JRockit &lt;a href="http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/thread_basics.html"&gt;is given here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is relevant for us is the example of Muxers which are shown as:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Blocked lock chains&lt;br /&gt;===================&lt;br /&gt;Chain 2:&lt;br /&gt;"ExecuteThread: '2' for queue: 'weblogic.socket.Muxer'" id=129 idx=0x218 tid=4079 waiting for java/lang/String@0x37804000 held by:&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" id=127 idx=0x210 tid=4077 in chain 1&lt;br /&gt;&lt;br /&gt;Open lock chains&lt;br /&gt;================&lt;br /&gt;Chain 1:&lt;br /&gt;"ExecuteThread: '1' for queue: 'weblogic.socket.Muxer'" id=128 idx=0x214 tid=4078 waiting for java/lang/String@0x37804000 held by:&lt;br /&gt;"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" id=127 idx=0x210 tid=4077 (active)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As per the explanation, the Open lock chain depicts Thread 1 waiting for Thread 0. This is not a deadlock, only a straight dependency.&lt;br /&gt;&lt;br /&gt;Since Thread 0 is already part of the Open lock chain, the fact that Thread 2 is also waiting on the same Thread 0 is treated as a "Blocked lock chain". &lt;br /&gt;In this case this is not a problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 15th Feb 2011&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I'm glad this blog entry on weblogic muxers has made it &lt;a href="http://forums.oracle.com/forums/thread.jspa?messageID=9318157&amp;tstart=0"&gt;onto the Oracle forums &lt;/a&gt;with a mention from &lt;a href="http://blogs.oracle.com/jamesbayer/"&gt;James Bayer&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-237683577457607113?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/237683577457607113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/05/weblogic-socket-muxers-are-not-stuck.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/237683577457607113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/237683577457607113'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/05/weblogic-socket-muxers-are-not-stuck.html' title='Weblogic - Socket Muxers in Thread Dumps'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ER-q_TZ-wqk/ShEe62tYQEI/AAAAAAAAADI/MazgSkaPf4I/s72-c/SamuraiMuxer.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2839874288694157682</id><published>2009-05-12T00:38:00.000-07:00</published><updated>2010-02-18T11:57:53.167-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='execute thread'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='application support'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Slow Server Response Part 4 - Platform Checks and Action Plan</title><content type='html'>&lt;!-- Jose Kuzhivelil's Blog --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html"&gt;In the earlier parts of this article &lt;/a&gt; I described some technical tuning tips specific to a slow-performing Weblogic JEE server.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt;Another earlier post&lt;/a&gt; has looked at analyzing thread dumps and prstats when the Weblogic/JEE server consumes high CPU. &lt;br /&gt;&lt;br /&gt;&lt;!-- how to analyze weblogic thread dumps --&gt;&lt;br /&gt;&lt;!-- how to analyze stuck threads --&gt;&lt;br /&gt;&lt;br /&gt;This article provides a sequence of actions a Support team should carry out when faced with a critical situation - the site is down / servers running high CPU  - and management teams want quick updates - and an action plan.&lt;br /&gt;&lt;br /&gt;So here is (from experience) the Rapid Action Plan:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Technical Checklist for the Platform &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Start a diary and mark out each of the steps given below as well as any following action with the timestamp at which it was carried out and the result/status.&lt;br /&gt; &lt;br /&gt;2. Get the relevant technical experts on a conference call + Netmeeting/LiveMeeting/Desktop Sharing/Remote Admin.&lt;br /&gt;&lt;br /&gt;3. Does the application have any traps or thresholds set which are configured to automatically raise alarms to the Support teams? Have any of the traps set been exceeded ? eg: Server CPU, Memory utilization, No of Threads &lt;br /&gt;&lt;br /&gt;4. Can we narrow down to a problem area - Web server, Application server, Database, OS - based on log files, error messages and Support team or User input. &lt;br /&gt;&lt;br /&gt;If a particular Weblogic Managed Server is identified as a point of failure, does the Configuration allow that server process to be shutdown for a while - thereby reducing Cluster capability but still providing acceptable Quality of service.&lt;br /&gt;&lt;br /&gt;Are all the Managed Servers running with equal threads? If not, this can cause a load balancing issue. &lt;br /&gt;&lt;br /&gt;Sometimes the bottleneck can be the Web server plugin which is not able to properly load balance the requests across the Weblogic cluster. This is usually the case when users complain of loss of session, spontaneous logout etc. The problem can be the user has been bounced from one Weblogic server to another in the cluster - and the session might not be replicated across the servers.&lt;br /&gt;&lt;br /&gt;Any redundant JDBC connection pools - i.e. those configured with a high capacity but monitoring shows they dont need that many.&lt;br /&gt;Then reduce the Capacity of that pool so that it does not hold on to unnecessary connections on the database.&lt;br /&gt;&lt;br /&gt;5. From the log files, identify whether a particular application or code area is causing an issue.  eg: EJB throwing errors, Spring bean configuration missing.&lt;br /&gt;&lt;br /&gt;6. Are the log files too large (&gt; 500 Mb) or not getting rotated via Weblogic rotation policy or Unix archiving ? &lt;br /&gt;&lt;br /&gt;7. Check the Downstream Back-end systems which the server connects to - via DBLink, Web service, XML/Http, JMS, HTTP screen scraping etc.? Any known issues or planned outages? There should be error logs pointing in that direction. Contact their support teams to know if their system is available and returning responses as per the SLA.&lt;br /&gt;&lt;br /&gt;8. &lt;em&gt;Can the problem be replicated on Reference/Test instances? &lt;/em&gt;&lt;br /&gt;A Dev or Test team can in parallel try out to see whether the issue is replicable.&lt;br /&gt;&lt;br /&gt;If Yes, is it code related or configuration related? &lt;br /&gt;&lt;br /&gt;If the issue is not replicable, then can it be data related ? Perhaps a particular set of data exists on Production which is not on the Test instance - and that could be the problem. Can the data be brought into Test to try and replicate the problem ? &lt;br /&gt;&lt;br /&gt;9. Can it be  content related? Does the platform have a Content Management System? Is the link from the CMS to the server working or broken? Is the Content correctly getting deployed into the database + file system as per daily process?&lt;br /&gt;&lt;br /&gt;Check if there was a content deployment carried out and any records whether they failed or passed. Is content deployment happening during the business timings, and utilizing system and CPU resources - which chokes the JEE server?&lt;br /&gt;&lt;br /&gt;Can a resource-hungry content deployment process be moved to out-of-business hours.&lt;br /&gt;&lt;br /&gt;10. Test broken user journeys on the site. &lt;br /&gt;&lt;br /&gt;Can the problem be seen while running HttpHeaders, HttpAnalyzer, Fiddler etc ? Does it show any change in HTTP parameters such as Cookies, Session timeouts?&lt;br /&gt;Compare these against the Test environment and see whether any mismatches which could cause the problem.&lt;br /&gt;If there is bouncing of user sessions between managed servers, this will be visible in the weblogic JSessionID which will be different on the client browser.&lt;br /&gt;&lt;br /&gt;11. What were the last few changes to the platform ? &lt;br /&gt;&lt;br /&gt;Check latest release or configuration change as per Support Team Diary of Events. Could these have caused an issue and should these be rolled back?&lt;br /&gt;&lt;br /&gt;Were these properly tested and signed off before going into Production.&lt;br /&gt;&lt;br /&gt;eg: any new Database driver, changes to TCP parameters, JTA timeouts increased?&lt;br /&gt;&lt;br /&gt;12. Check the last few support cases raised? See if there were any problems reported by business or end customers. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;13. Solaris/OS checks &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Is the platform running on the latest OS patch levels and JDK settings as recommended by Sun.&lt;br /&gt;&lt;br /&gt;a. No of processes running. Use &lt;br /&gt; ps -ef | wc -l &lt;br /&gt;&lt;br /&gt;b. Ping the boxes, to check if they are alive &lt;br /&gt;&lt;br /&gt;&lt;em&gt;c. CPU utilization &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;prstat &lt;br /&gt;&lt;br /&gt;&lt;em&gt;d. Memory utilization &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;vmstat 3 &lt;br /&gt;&lt;br /&gt;Swap space utilization, amount of space in /tmp - is there any old file or core dump occupying the directory used as swap space. We once moved old EAR files from /tmp on the server; memory utilisation went from approx 90% down to 65%.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;e. Disk space &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;df -ek &lt;br /&gt;&lt;br /&gt;f. No of File descriptors &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;14. Weblogic/Web server checks &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;a. Thread utilization - any Stuck Threads &lt;br /&gt;&lt;br /&gt;Analyze Thread dumps , at least 4 sets of Thread dumps taken 5 seconds apart when stuck thread is observed. See &lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt; here &lt;/a&gt; for more details on what to look for in the thread dumps. Use Samurai or &lt;a href="https://tda.dev.java.net/"&gt;TDA &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b. CPU %&lt;br /&gt;&lt;br /&gt;c. Access and error logs - Any CRITICAL messages in the logs. Any Connection_Refused errors indicating the threads were not able to accept new requests.&lt;br /&gt;&lt;br /&gt;d. No of open sockets to weblogic &lt;br /&gt;&lt;br /&gt;netstat -a | grep &lt;portnumber&gt; &lt;br /&gt;&lt;br /&gt;e. Memory utilization via Weblogic console &lt;br /&gt;&lt;br /&gt;f. Check via console if all the managed servers are up and running &lt;br /&gt;&lt;br /&gt;g. Connection pool utilization, Are they hitting the peak values.&lt;br /&gt;&lt;br /&gt;h. &lt;em&gt;Frequent Garbage collection &lt;/em&gt;shown in the console?&lt;br /&gt;Frequency of GC, GC pattern. Has the JVM been tuned to allow optimum garbage collection. See &lt;a href="http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html"&gt;this URL for more&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;i. &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-jsp-and-servlet.html"&gt;Check for the values in weblogic.xml for jsp-pageCheckSeconds &lt;/a&gt;and servlet-reload-check-secs - if these are at the default of 1, the server will check each second to see whether the JSP should be recompiled - this is horribly slow &lt;br /&gt;&lt;br /&gt;j. Cron job logs - any failures. &lt;br /&gt;&lt;br /&gt;k. No of weblogic sessions per server - the more the number of HttpSessions, the higher the memory (RAM) that gets used. &lt;br /&gt;&lt;br /&gt;l. Is a large part of the application journey over SSL. When supporting the cryptography operations in the SSL protocol, WebLogic Server cannot handle as many simultaneous connections. &lt;br /&gt;Typically, for every SSL connection that the server can handle, it can handle three non-SSL connections. SSL reduces the capacity of the server by about 33-50% depending upon the strength of encryption used in the SSL connections.&lt;br /&gt;(Source: http://edocs.bea.com/wlp/docs92/capacityplanning/capacityplanning.html#wp1080286)   &lt;br /&gt;Consider reducing the SSL journeys on the site.&lt;br /&gt;&lt;br /&gt;m. Disk space taken by Weblogic and other logs such as Log4J. &lt;br /&gt;Is log4j running in DEBUG and writing out loads of logs ? This will also slow down the server horribly.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;15. Database checks &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;a. SQL Server locks (Call out DBA) &lt;br /&gt;&lt;br /&gt;b. Database stuck/locked processes &lt;br /&gt;&lt;br /&gt;c. Any DB link down &lt;br /&gt;&lt;br /&gt;d. Any issues with open cursors, cached cursors ? &lt;br /&gt;&lt;br /&gt;e. Is the database running at very high Memory Utilization?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;16. Search Engine processing - check the log for the day. &lt;br /&gt; &lt;br /&gt;&lt;br /&gt;17. Any MIS such as Webtrends / Omniture Analysis - for application usage. Has there been a sudden rise in users on the site - eg a marketing campaign or a new feature gone live - causing a rise in usage which the infrastructure cannot cope with.&lt;br /&gt;&lt;br /&gt;18. Any application cached data which was wiped out and took time to rebuild - causing slow service in the interim period. eg: is any database table with a lot of rows being cached.&lt;br /&gt;Or conversely, is there incorrect data in a certain cache and will clearing the cache help ?&lt;br /&gt;&lt;br /&gt;19. SMTP email delivery failures due to any problems on the OS ?&lt;br /&gt;&lt;br /&gt;20. Any planned backup processes running on the OS which takes up a lot of CPU.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Remedial actions &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Make a list of possible changes based on the above checks to address these problems. &lt;br /&gt;&lt;br /&gt;2. Only change one setting on any system at a time. Test and record the desired effects and observed effects. Be clear on why a particular change is being made. &lt;br /&gt;&lt;br /&gt;3. If it doesn't work rework the plan to get to root cause of failure.&lt;br /&gt;&lt;br /&gt;4. Be aware that reactive changes will be made directly to the production&lt;br /&gt;environment by various parties. Significant changes will be made purely to enable investigation and diagnosis of issues.&lt;br /&gt;The lack of up-to-date documentation creates risk. Maintain a documented rationale for a particular design decision, configuration choice, or system parameter; this reduces the likelihood that mistakes will be repeated. Documentation is a key communication tool, without it intent may be miscommunicated within the team. If key staff members leave, knowledge will be lost to the extent that the platform may become unmanageable.&lt;br /&gt;&lt;br /&gt;5. Add additional tests to the regression test&lt;br /&gt;suite. Increase the coverage of the regression test suite, focussing on&lt;br /&gt;simulating live system interaction.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Over the long term, identify and re-architect towards removing Single Points of Failure - such that loss of a single machine or process would not lead to a loss of service.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;· Single web server machine, hosting the Apache/SunOne instances.&lt;br /&gt;· Single application server machine, hosting the Weblogic application server.&lt;br /&gt;· Single database server instance.&lt;br /&gt;&lt;br /&gt;The system runs at risk of lengthy service outage if any one of these components fails. If a hardware failure occurred and one of the servers was lost, alternative hardware would need be installed and initialised from back-up tapes.&lt;br /&gt;This needs to be fixed and stabilized over the long term.&lt;br /&gt;&lt;br /&gt;6. While the analysis is going on, a member of Support team should circulate the KEY Metrics on an hourly basis to the TECHNICAL community. Ensure this is the important dataset and not too much info which just becomes noise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example in the table below:&lt;br /&gt;&lt;br /&gt;&lt;table border=2&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt; Servers &lt;/td&gt;&lt;td&gt;Server 1&lt;/td&gt;&lt;td&gt;Server 2 &lt;/td&gt;&lt;td&gt;Server 3&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Idle Threads&lt;/td&gt;&lt;td&gt;11&lt;/td&gt;&lt;td&gt;14&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;JMSErrors&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;IOExceptions&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Stuck Threads&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;7&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;JMSErrors&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;netstat -a | grep TIME_WAIT | wc -l &lt;/td&gt;&lt;td&gt;186&lt;/td&gt;&lt;td&gt;289&lt;/td&gt;&lt;td&gt;69&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;CPU Utilization (%)&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;1.8&lt;/td&gt;&lt;td&gt;3.6&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Memory Utilization (%)&lt;/td&gt;&lt;td&gt;3.9&lt;/td&gt;&lt;td&gt;2.9&lt;/td&gt;&lt;td&gt;2.1&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;500 Internal Server Error&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No of logged in Users: 260 &lt;br /&gt;&lt;br /&gt;JMS Pending Messages: 0&lt;br /&gt;&lt;br /&gt;&lt;!-- Jose Kuzhivelil's Blog --&gt;&lt;br /&gt;&lt;br /&gt;Any queries or clarifications, leave me a comment and I'll try to get back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2839874288694157682?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2839874288694157682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-server-response-part-4-platform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2839874288694157682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2839874288694157682'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-server-response-part-4-platform.html' title='Slow Server Response Part 4 - Platform Checks and Action Plan'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-4460139127564534012</id><published>2009-05-07T22:02:00.000-07:00</published><updated>2009-08-05T22:57:15.621-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='app server'/><category scheme='http://www.blogger.com/atom/ns#' term='file descriptor'/><category scheme='http://www.blogger.com/atom/ns#' term='FD'/><category scheme='http://www.blogger.com/atom/ns#' term='application support'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Slow Weblogic Response Part 3 - Tuning File Descriptors</title><content type='html'>This article is a follow-up to the &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-2-overall.html"&gt;Overall Tuning considerations discussed earlier&lt;/a&gt;.&lt;br /&gt;A very important Operating System value to be tuned are the File Descriptors &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;File Descriptors and relation to Sockets&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A File Descriptor (FD) is a handle created by a process when a file is opened. Each process can use a set limit of FDs and this is usually an OS level setting. &lt;br /&gt;In the Solaris 8 version, the default is 1024. In later Solaris releases, the default is 65,536 but this needs to be set in the /etc/system as given below. &lt;br /&gt;So, the default available for a process on an untuned OS is 1024. &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;# ulimit -a&lt;br /&gt;time(seconds) unlimited&lt;br /&gt;file(blocks) unlimited&lt;br /&gt;data(kbytes) unlimited&lt;br /&gt;stack(kbytes) 8192&lt;br /&gt;coredump(blocks) unlimited&lt;br /&gt;&lt;strong&gt;nofiles(descriptors) 2048 &lt;/strong&gt;&lt;br /&gt;memory(kbytes) unlimited&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;In a JEE server, each incoming request uses a TCP socket and this socket consumes a file descriptor from the total available for the process.&lt;br /&gt;&lt;br /&gt;As the number of requests coming into the server increase, you can face a situation where there are many sockets open and thus you run out of FDs&lt;br /&gt;This could happen if you have a large number of clients (~1000 or more). This could also happen if you have HTTP connections with keep-alive turned off and so a lot of sockets are in TIME_WAIT.&lt;br /&gt;&lt;br /&gt;If you have Stuck Threads, then those keep the FDs open and those wont be closed until the thread is released.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;File Descriptors limit exceeded&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A Weblogic server throws the below error when the FD limit has been exhausted.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;BEA-000204 java.net.SocketException: Too many open files&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;java.io.IOException: Too many open files &lt;br /&gt;    at java.lang.UNIXProcess.forkAndExec(Native Method)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When a Weblogic server starts up, there is an INFO message in the logs stating how many FDs have been allocated to the process.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;&amp;lt;WLS Kernel&gt;&gt; &amp;lt;&gt; &amp;lt;BEA-000415&gt; &amp;lt;System has file descriptor limits of - soft: 2,048, hard: 2,048&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;main&gt; &amp;lt;&amp;lt;WLS Kernel&gt;&gt; &amp;lt;&gt; &amp;lt;BEA-000416&gt; &amp;lt;Using effective file descriptor limit of:&lt;br /&gt;&lt;br /&gt; 2,048 open sockets/files.&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To display a process' current file descriptor limit on Solaris, the command is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;/usr/proc/bin/pfiles &amp;lt;pid&gt;  grep rlimit&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;$/usr/proc/bin/pfiles 9052  grep rlimit&lt;br /&gt;&lt;br /&gt;Current rlimit: 8192 file descriptors&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can check the actual number of FDs being used by a running server at any time using this command:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note: This is not the max limit but the actual number used by the process at that point of time&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ls /proc/&amp;lt;pid&gt;/fd  wc –l&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you monitor this on a regular basis, you can see how often you are nearing the max limit set, and whether the values need to be tuned to support the peak loads and peak traffic timings for your server.&lt;br /&gt;&lt;br /&gt;As an example, we plotted FDs used every 5 minutes as below&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Time&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;FD Used&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:00&lt;/td&gt;&lt;td&gt;389&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:05&lt;/td&gt;&lt;td&gt;429&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:10&lt;/td&gt;&lt;td&gt;748&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:15&lt;/td&gt;&lt;td&gt;488&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:20&lt;/td&gt;&lt;td&gt;337&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;11:25&lt;/td&gt;&lt;td&gt;595&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Increasing File Descriptors&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Hard limit is the max value set on the OS.&lt;br /&gt;&lt;br /&gt;The Soft limit shows the value set for a particular child process on the OS. This cannot be higher than the hard limit. &lt;br /&gt;You can change the soft limit on-the-fly by using&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ulimit -Sn 8192&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This will only for that that telnet session and will not be a permanent change. Add this command to the user's .profile file to avoid repeating each time.&lt;br /&gt;&lt;br /&gt;If hard limits need to be set, root user needs to update the /etc/system file and the machine to be rebooted. Even though the rlim_fd_max default on Solaris 9 is 65536, it must be in the /etc/system file&lt;br /&gt;&lt;br /&gt;The values to be changed are&lt;br /&gt;&lt;br /&gt;rlim_fd_max (default hard limit)&lt;br /&gt;rlim_fd_cur (default soft limit)&lt;br /&gt;&lt;br /&gt;On Linux:&lt;br /&gt;&lt;br /&gt;To increase the hard limit it to (say) 65535, use the following command (as root): &lt;br /&gt;&lt;br /&gt;echo "65535" &gt; /proc/sys/fs/file-max &lt;br /&gt;&lt;br /&gt;To make this value to survive a system reboot, add it to /etc/sysctl.conf and specify the maximum number of open files permitted: &lt;br /&gt;&lt;br /&gt;fs.file-max = 65535&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any queries or clarifications, leave me a comment and I'll try to get back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-4460139127564534012?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/4460139127564534012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/4460139127564534012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/4460139127564534012'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html' title='Slow Weblogic Response Part 3 - Tuning File Descriptors'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2308182946814163642</id><published>2009-05-06T23:11:00.000-07:00</published><updated>2010-02-18T11:57:28.210-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='GC'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Slow Weblogic Response Part 2 - Overall Tuning Considerations</title><content type='html'>&lt;!-- how to analyze weblogic thread dumps --&gt;&lt;br /&gt;&lt;!-- how to analyze stuck threads --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-jsp-and-servlet.html"&gt;Part 1 of this article&lt;/a&gt; was related to using the JSP precompilation and tuning the recompilation settings provided in Weblogic.&lt;br /&gt;&lt;br /&gt;Now, lets take a look at the other parameters that require tuning and setting correctly, in order for the Weblogic server to be generating acceptable performance of your site.&lt;br /&gt;&lt;br /&gt;Usually the problem statement is similar to this:&lt;br /&gt;&lt;br /&gt;1. The site regularly stops responding and all available execute threads are consumed. All future requests fail to be handled and a server restart is required.&lt;br /&gt;2. The page response times of the entire site are too high and need to be brought down to a more useable level.&lt;br /&gt;&lt;br /&gt;Note: An &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-server-response-part-4-platform.html"&gt;additional post has been published which provides a skeleton Action Plan &lt;/a&gt;for analyzing the entire slow site/high CPU issue including managing stakeholder expectations and appropriate reporting. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Operating System Review&lt;/strong&gt;&lt;br /&gt;A review of the Operating System configuration needs to look at&lt;br /&gt;a) The number of file descriptors available and whether that matches the value recommended for Weblogic&lt;br /&gt;b) Various TCP settings (also called NDD parameters) which will affect how long it takes to recycle a closed or dropped connection.&lt;br /&gt;2 top settings are:&lt;br /&gt;• File Descriptor limit: increase to 8192 if not 65536. A detailed &lt;a href="http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-3-tuning.html"&gt;follow-up on File Descriptors is published here&lt;/a&gt;.&lt;br /&gt;• tcp_time_wait_interval: change to 60000 [The default in Solaris 8 is 4 minutes used to keep a socket open in TIME_WAIT state, even after the response is provided to the client, set this down to 1 minute. The default in Solaris 9 is 1 minute]&lt;br /&gt;Check the &lt;a href="http://e-docs.bea.com/wls/docs100/perform/OSTuning.html"&gt;Oracle site for the latest recommended values &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Usage and JDBC Drivers&lt;/strong&gt;&lt;br /&gt;a) If you get Out Of Memory errors occurring in JDBC calls, it is recommended that the JDBC driver be upgraded to the latest version.&lt;br /&gt;&lt;br /&gt;b) Prepared Statement caching is a feature that allows prepared statements to be held in a cache on the database so they do not have to be re-parsed for each call. This functionality needs to be enabled per Connection Pool and can have a significant impact on the performance of the pools. But this needs to be validated with a focussed round of Performance testing.&lt;br /&gt;&lt;br /&gt;It should be noted that for every Prepared Statement that is held in cache, a cursor is held open on the database for each connection in the pool. So if a cache size of 10 is used on the abcPool, and the pool has a size of 50 then 500 open cursors will be required. Repeatable load tests will highlight any gains achieved by enabling this caching.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Review JDBC Pool Sizes&lt;/strong&gt;&lt;br /&gt;Review connection pool versus the number of Execute threads. Usually keep Pool size close to Execute thread size. Note: This applies to versions earlier than Weblogic 9. See detailed explanation below.&lt;br /&gt;&lt;br /&gt;If the JDBC pool size is quite less compared to the Thread size, there is the potential to negatively impact performance quite dramatically, since threads have to wait for connections to be returned to the pool.&lt;br /&gt;Your most frequently used pool should have their minimum (initial) and maximum sizes increased to the number of Execute threads plus one. This will mean there is an available connection for every thread.&lt;br /&gt;One comment on pool sizing it is beneficial where ever possible to have the initial and max connections set to the same size for a JDBCPool as this avoids expanding/shrinking work that can be costly, for both the establishment of new connections while expanding the pool and housekeeping work for the pool.&lt;br /&gt;&lt;br /&gt;However it is also recommended to monitor the JDBC pools during peak hours and see how many connections are being used at maximum. If you are not hitting the MaxCapacity, it is useful to reduce the MaxCapacity to avoid unnecessary open cursors on the database.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: As of Weblogic 9 and higher, Execute Queues are now &lt;a href="http://e-docs.bea.com/wls/docs90/config_wls/self_tuned.html"&gt;replaced by Work Managers&lt;/a&gt;. Work Managers can be used for JDBC pools by defining the &lt;a href="http://e-docs.bea.com/wls/docs100/config_wls/self_tuned.html#wp1064810"&gt;&lt;span style="font-family:courier new;"&gt;max-threads-constraint&lt;/span&gt; &lt;/a&gt;to define how many threads to allocate for a particular Datasource. &lt;br /&gt;It is possible to run Weblogic 9 and 10 with the Execute Queues as available earlier. This is not recommended since Work Managers are self-tuning and more advanced than Execute Threads.&lt;br /&gt;&lt;br /&gt;WebLogic Server, Version 8.1, implemented Execute Queues to handle thread management in which you created thread-pools to determine how workload was handled. WebLogic Server still&lt;br /&gt;provides Execute Queues for backward compatibility, primarily to facilitate application&lt;br /&gt;migration. However, when developing new applications, you should use Work Managers to perform thread management more efficiently.&lt;br /&gt;You can enable Execute Queues in the following ways:&lt;br /&gt;􀁺 Using the command line option&lt;br /&gt;-Dweblogic.Use81StyleExecuteQueues=true&lt;br /&gt;􀁺 Setting the Use81StyleExecuteQueues property via the Kernel MBean in config.xml.&lt;br /&gt;Enabling Execute Queues disables all Work Manager configuration and thread self tuning.&lt;br /&gt;Execute Queues behave exactly as they did in WebLogic Server 8.1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Persistent JMS Queues&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Verify whether the database architecture is such that persistent JMS queues use the same database instance as a message store as your Weblogic portal uses for data.&lt;br /&gt;As the volumes on these queues increase this could significantly degrade the performance of the portal by competing for valuable CPU cycles on the database server.&lt;br /&gt;&lt;br /&gt;1. Move the message store for persistent queues to a separate database instance from that used by most of the JDBC pools belonging to the Weblogic server. This will prevent increases in message volumes from adversely affecting the performance of the database, which would also slow the portal applications down and vice-versa.&lt;br /&gt;&lt;br /&gt;2. Implement paging with a file-store. This allows the amount of memory consumed by JMS queues to be restricted by paging message contents to disk and only holding headers in memory. Note that this does not provide failover protection in the way persistence does and performs better with a paging file-store than a paging JDBC store.&lt;br /&gt;&lt;br /&gt;3. It is recommended that a review is also undertaken to determine exactly which queues are persisted and whether they truly need to be. The performance gains from switching to non-persisted queues are substantial, and guaranteed delivery is not always required.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Review Number of Execute Threads&lt;/strong&gt;&lt;br /&gt;A common mistake made by Support teams when seeing Stuck threads is to increase the number of execute threads in a single ‘default’ queue. At one time, I have worked in a project which ran the Weblogic server with 95 threads.&lt;br /&gt;&lt;br /&gt;This figure is very high and results in a large amount of context-switching as load increases, which consumes valuable CPU cycles. Because threads consume memory, you can degrade performance by increasing the value of the Thread Count attribute unnecessarily. &lt;br /&gt;&lt;br /&gt;Taking a Thread Dump when the server is not responding will show what the threads are doing, and help identify whether there is an application coding issue or deadlock occuring. Use Samurai to analyze these as &lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt;earlier posted&lt;/a&gt;&lt;br /&gt;It is recommended that regular monitoring of the number of idle threads and the length of queued requests for each execute queue is set up via MBeans. This allows the Support teams to plot a graph of utilization and validation of any changed values.&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: As of Weblogic 9 and higher, Execute Queues are now &lt;a href="http://e-docs.bea.com/wls/docs90/config_wls/self_tuned.html"&gt;replaced by Work Managers&lt;/a&gt;. Another good link is &lt;a href="http://www.oracle.com/technology/pub/articles/dev2arch/2006/01/workload-management.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Use Dedicated Execute Thread Queue for Intensive applications&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As the number of threads is small, and if a particular application is seen to utilize a majority of the execute, the following 2 approaches are suggested to resolve the issue:&lt;br /&gt;1. Review the design of the offending application to determine whether it really needs so many threads.&lt;br /&gt;2. Move the offending application to a dedicated execute queue, with enough threads allocated to this queue. This will prevent it from starving the main server of threads and allow the ‘default’ queue to remain with a lower number of Execute threads. This split of Execute Queue can be done at servlet or webapp level. Mail me if you need an example, we've done both successfully in WL 8.1 and 9.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note&lt;/strong&gt;: However, as of Weblogic 9 and higher, Execute Queues are now &lt;a href="http://e-docs.bea.com/wls/docs90/config_wls/self_tuned.html"&gt;replaced by Work Managers&lt;/a&gt;. You can use a &lt;a href="http://edocs.bea.com/wls/docs103/config_wls/self_tuned.html#wp1063790"&gt;Work Manager to dedicate resources&lt;/a&gt; at Application, Web App, EJB level.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Review Java VM Settings&lt;/strong&gt;&lt;br /&gt;Tuning the JVM settings for the Total Heap, and Young/Old Generations is essential to regulate the frequency of Garbage Collection on the servers. &lt;a href="http://java.sun.com/docs/hotspot/gc1.4.2/"&gt;The basic primer is on the Sun website&lt;/a&gt;, and a follow up of actual values and learnings is published &lt;a href="http://jojovedder.blogspot.com/2009/06/slow-weblogic-part-6-jvm-heap-analysis.html"&gt;here&lt;/a&gt;. The most essential ones are Xms, Xmx for the total Heap and NewSize, NewRatio for the Young Generation. Also set PermSize and MaxPermSize appropriately to avoid consuming high memory&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Other Areas&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. To speed up server start times, do not delete the .wlnotdelete directories at startup - Unless you are deploying changed application jars and code. &lt;br /&gt;&lt;strong&gt;Be aware &lt;/strong&gt;you might occasionally see a problem shutting down the server which goes into an UNKNOWN state due to too many old temp files and wl_internal files.&lt;br /&gt;You will get the dreaded error below which can only be resolved by killing the process and clearing out all temp files, .lck files etc within the domain. The files are under DOMAIN_HOME/servers/&lt;server_name&gt;/&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;weblogic.management.NoAccessRuntimeException: Access not allowed for subject: principals=[weblogic, Deployers], on ResourceType: ServerLifeCycleRuntime Action: execute, Target: shutdown&lt;br /&gt;        at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:195)&lt;br /&gt;        at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. Avoid the URLEncoder.encode method call as much as possible. This calls is not optimal in most JDKs &lt; 1.5 and is often found as memory and CPU hotspot issue.&lt;br /&gt;&lt;br /&gt;3. Check the network connection between WebLogic and the database.  If Thread dumps show that threads are often in a suspended state (waiting for so long that they were suspended) while doing a socket read from the database.  &lt;br /&gt;The DBA wouldn't see this as a long-running SQL statement.  This needs to be checked out at the network level.&lt;br /&gt;&lt;br /&gt;4. Switch off all DEBUG options on Production on app server as well as web server and web server plugins.&lt;br /&gt;&lt;br /&gt;5. Ensure log files are rotated so that they can be backed up and moved off the main log directory. Define a rotation policy based on file size or fixed time (like 24 hours)&lt;br /&gt;However also note that: On certain platforms, if some application is tailing &lt;br /&gt;the log at the time of rotation, the rotation fails. Stop the application tailing and reopen the tail after the rotation is complete.&lt;br /&gt;&lt;br /&gt;6. Do not use "Emulate Two-Phase Commit for non-XA Driver" for DataSources. &lt;br /&gt;It is not a good idea to use emulated XA.  It can result in loss of data integrity and can cause heuristic exceptions.  This option is only meant for use with databases for which there is no XA driver so that the datasources for these pools can still participate in XA transactions.  &lt;br /&gt;If an XA driver is available (and there is for Oracle), it should be used.  If this option is selected because of problems with Oracle's Thin XA driver, try the newest version, or pick a different XA driver.&lt;br /&gt;&lt;br /&gt;7. The &amp;lt;save-sessions-enabled&amp;gt; element in web.xml controls whether session data is cleaned up during redeploy or undeploy. &lt;br /&gt;It affects memory and replicated sessions. &lt;strong&gt;The default is false&lt;/strong&gt;. Setting the value to true means session data is saved and this is an overhead.&lt;br /&gt;&lt;br /&gt;8. If firewalls are present between Weblogic server and the database or an external system connecting via JMS, this can cause transactional and session timeout issues. The session timeout on the firewall shoudl be configured to allow for normal transaction times.  &lt;br /&gt;In the case of JMS, transactional interoperation between the two servers can be compromised and hence it is beneficial to open the firewall between the two servers so that RMI/T3 connections can be made freely.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Any queries or clarifications, leave me a comment and I'll try to get back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2308182946814163642?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2308182946814163642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-2-overall.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2308182946814163642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2308182946814163642'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-part-2-overall.html' title='Slow Weblogic Response Part 2 - Overall Tuning Considerations'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-611553133635378459</id><published>2009-05-06T01:37:00.000-07:00</published><updated>2010-02-16T22:50:47.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='execute thread'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Slow Weblogic response - JSP and Servlet Reload</title><content type='html'>The top Weblogic tuning tip I've used over the last few years is the one below. This article deals with Weblogic 8 and 9.&lt;br /&gt;&lt;br /&gt;You know the symptoms:&lt;br /&gt;&lt;br /&gt;JEE Application works okay on Unit Integration and Test servers. &lt;br /&gt;But once you're into Performance and Stress Testing - it's totally choked up - pages are returned so slowly - Project Manager is asking for a code review to find the blockers - etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first thing to do on a slow JEE application is to take a thread dump, see more on that &lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, the thing to look for in the Thread Dump, is multiple threads doing this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;weblogic.servlet.jsp.JspStub.checkForReload(JspStub.java:144)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;or this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;waiting for monitor entry [c4f7f000..c4f7fc28]&lt;br /&gt;     at weblogic.servlet.internal.ServletStubImpl.checkForReload(ServletStubImpl.java:771)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is not a stuck thread within your code – but this is a weblogic.xml setting for checking each time if your servlet class or JSP has been changed.&lt;br /&gt;&lt;br /&gt;As documented here:&lt;br /&gt;&lt;br /&gt;http://e-docs.bea.com/wls/docs92/webapp/weblogic_xml.html#wp1038491&lt;br /&gt;&lt;br /&gt;Sets the interval, in seconds, at which WebLogic Server checks to see if JSP files have changed and need recompiling. Dependencies are also checked and recursively reloaded if changed. &lt;br /&gt;&lt;br /&gt;If set to 0, pages are checked on every request. If set to -1, page checking and recompiling is disabled.&lt;br /&gt;&lt;br /&gt;Most users set this to -1 to disable in Production unless they're altering jsps on the fly (which is not normal practice on a production system).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The correct syntax for this is:&lt;br /&gt;&lt;br /&gt;&amp;lt;weblogic-web-app&gt;&lt;br /&gt;&amp;lt;jsp-descriptor&gt;&lt;br /&gt;    &amp;lt;jsp-param&gt;&lt;br /&gt;     &lt;strong&gt; &amp;lt;param-name&gt;pageCheckSeconds&amp;lt;/param-name&gt;&lt;br /&gt;      &amp;lt;param-value&gt;-1&amp;lt;/param-value&gt;&lt;/strong&gt;&lt;br /&gt;    &amp;lt;/jsp-param&gt;&lt;br /&gt;  &amp;lt;/jsp-descriptor&gt;&lt;br /&gt;&lt;br /&gt; The similar value for servlets is set using the servlet-reload-check-secs within the tags below.&lt;br /&gt;&lt;br /&gt;  &amp;lt;container-descriptor&gt;&lt;br /&gt;    &lt;strong&gt;&amp;lt;servlet-reload-check-secs&gt;-1&amp;lt;/servlet-reload-check-secs&gt;&lt;/strong&gt;&lt;br /&gt;  &amp;lt;/container-descriptor&gt;&lt;br /&gt;&amp;lt;/weblogic-web-app&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On &lt;strong&gt;non-production environments&lt;/strong&gt;, you can set this to a reasonable value such as 600 (in seconds, which is 10 minutes) to allow for changed JSPs you drop in/FTP to the deployed environment, and want those to reflect sooner.&lt;br /&gt;&lt;br /&gt;The other thing we must do on a production system is to &lt;a href="http://otndnld.oracle.co.jp/document/products/wlp/docs81/perftune/5jsp.html"&gt;precompile the JSPs &lt;/a&gt;as part of the build, and before deploying to Live.&lt;br /&gt;&lt;br /&gt;Else, even the first time JSP compilation is quite slow and this must be avoided on the Production system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For the same solution on Weblogic 10, &lt;a href="http://jojovedder.blogspot.com/2010/02/more-tuning-tips-on-slow-weblogic-10.html"&gt;look at an updated article.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-611553133635378459?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/611553133635378459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-jsp-and-servlet.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/611553133635378459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/611553133635378459'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/05/slow-weblogic-response-jsp-and-servlet.html' title='Slow Weblogic response - JSP and Servlet Reload'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7239432630094875127</id><published>2009-04-15T02:28:00.000-07:00</published><updated>2009-07-02T00:23:33.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='emma'/><title type='text'>com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH]</title><content type='html'>&lt;a href="http://emma.sourceforge.net/"&gt;Emma &lt;/a&gt;is used for finding the code coverage of JUnit test classes.&lt;br /&gt;&lt;br /&gt;When running Emma with a JEE container, the source .class files (not the .java files) are first &lt;a href="http://emma.sourceforge.net/faq.html#q.files"&gt;instrumented &lt;/a&gt;and then deployed on the J2EE server.&lt;br /&gt;&lt;br /&gt;Then the test classes are executed from ant command line or via an Eclipse plug-in, and this will write out the coverage data into .em or .ec files.&lt;br /&gt;&lt;br /&gt;Sometimes, an error observed when running Emma is&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;emma.report:&lt;br /&gt;   [report] processing input files ...&lt;br /&gt;   [report] 2 file(s) read and merged in 172 ms&lt;br /&gt;   [report] com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH] runtime version of class [com.xyz.action.MyAction] in the coverage data is not consistent with the version of this class in the metadata, possibly because stale metadata is being used for report generation.&lt;br /&gt;&lt;br /&gt;   [report]     at com.vladium.emma.report.ReportDataModel.getView(ReportDataModel.java:95)&lt;br /&gt;   [report]     at com.vladium.emma.report.AbstractReportGenerator.initialize(AbstractReportGenerator.java:207)&lt;br /&gt;   [report]     at com.vladium.emma.report.html.ReportGenerator.process(ReportGenerator.java:85)&lt;br /&gt;   [report]     at com.vladium.emma.report.ReportProcessor._run(ReportProcessor.java:254)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To calculate the coverage, EMMA combines data of two types: &lt;br /&gt;metadata (static info about your Java classes, methods, lines, and basic blocks) and runtime coverage data (which basic blocks have been executed)&lt;br /&gt;&lt;br /&gt;The error occurs when there is a mismatch in the versions of the classes used while recording the metadata.em and coverage.em files. The runtime version of the class in the coverage data is not consistent with the same class in the metadata&lt;br /&gt;&lt;br /&gt;In simpler terms, the in-container application jars deployed on the JEE server are not in sync with the currently instrumented source from where the emma is being run, hence the class stamp difference in .emma files – metadata.em and coverage.em&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update - &lt;/strong&gt;&lt;br /&gt;A couple of comments posted below have some more checks and solutions to this problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7239432630094875127?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7239432630094875127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/04/comvladiumemmaemmaruntimeexception.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7239432630094875127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7239432630094875127'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/04/comvladiumemmaemmaruntimeexception.html' title='com.vladium.emma.EMMARuntimeException: [CLASS_STAMP_MISMATCH]'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2658352513360496920</id><published>2009-04-02T03:11:00.001-07:00</published><updated>2009-05-05T22:12:39.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='repository'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Running Maven offline using local Repository</title><content type='html'>Sometimes you see Maven downloading POM files for dependencies which are already in your local repository and you're wondering why it does this.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Downloading: http://repo1.maven.org/maven2//org/apache/xmlgraphics/fop/0.95/fop-&lt;br /&gt;0.95.pom&lt;br /&gt;Downloading: http://repo1.maven.org/maven2//org/apache/xmlgraphics/xmlgraphics-c&lt;br /&gt;ommons/1.3.1/xmlgraphics-commons-1.3.1.pom&lt;br /&gt;Downloading: http://repo1.maven.org/maven2//org/apache/xmlgraphics/batik-svg-dom&lt;br /&gt;/1.7/batik-svg-dom-1.7.pom&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The reason it does is because when these were installed in the local repository, it was not given a flag of -Dgenerate.pom=true &lt;br /&gt;&lt;br /&gt;If you run the install with this flag, then it will generate and install a local POM file for you, and will not download the POM from the internet repository.&lt;br /&gt;&lt;br /&gt;An example below&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mvn install:install-file -DgroupId=%GROUP_ID% -DartifactId=%ARTIFACT_ID% -Dversion=%VERSION% -Dfile=%COMPONENT%.jar -Dpackaging=jar -DgeneratePom=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are 2 other ways to run the build without connecting to the internet or network repository each time - provided you have all the required dependencies available offline.&lt;br /&gt;&lt;br /&gt;1. Run the maven build in offline mode&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mvn -o install&lt;br /&gt;&lt;br /&gt;[INFO]&lt;br /&gt;NOTE: Maven is executing in offline mode. Any artifacts not already in your loca&lt;br /&gt;l&lt;br /&gt;repository will be inaccessible.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Point the repository to the local file system.&lt;br /&gt;&lt;br /&gt;On my local build, if running repeated code builds when I know there is no change in dependency, I have a profile set up to point the repository to a local file system.&lt;br /&gt;&lt;br /&gt;In the repository definition, instead of &lt;br /&gt;&amp;lt;url&gt;http://repo1.maven.org/maven2/&amp;lt;/url&amp;gt;&lt;br /&gt;&lt;br /&gt;use the file:// path &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&amp;lt;repository&amp;gt;&lt;br /&gt;    &amp;lt;id&gt;central&amp;lt;/id&amp;gt;&lt;br /&gt;    &amp;lt;url&gt;file://D:\mavenrepo&amp;lt;/url&amp;gt;&lt;br /&gt;   &amp;lt;/repository&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will still see the message indicating downloading of POM, but this time from the local file system.&lt;br /&gt;And this will be much faster.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Downloading: file://D:\mavenrepo\cactus\1.7.2\cactus-1.7.2.pom&lt;br /&gt;Downloading: file://D:\mavenrepo\strutstest\2.1.3\strutstest-2.1.3.pom&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2658352513360496920?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2658352513360496920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2658352513360496920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2658352513360496920'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html' title='Running Maven offline using local Repository'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7947282354842996452</id><published>2009-03-13T01:55:00.000-07:00</published><updated>2009-03-13T01:58:37.866-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><title type='text'>java.lang.ClassNotFoundException: org.apache.tools.ant.Main</title><content type='html'>This error should not be occuring when you install Ant out-of-the-box and run it. However, on the rare occasions it does occur - the solution is quite simple.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;java.lang.ClassNotFoundException: org.apache.tools.ant.Main&lt;br /&gt;        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)&lt;br /&gt;        at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)&lt;br /&gt;        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)&lt;br /&gt;        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)&lt;br /&gt;        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:244)&lt;br /&gt;        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Take a look at the ANT_HOME/lib folder - and ensure that the ant.jar is in there and showing a size of 1MB or higher.&lt;br /&gt;&lt;br /&gt;It is usually due to a corrupted version of ant.jar in the above path.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7947282354842996452?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7947282354842996452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/03/javalangclassnotfoundexception.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7947282354842996452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7947282354842996452'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/03/javalangclassnotfoundexception.html' title='java.lang.ClassNotFoundException: org.apache.tools.ant.Main'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-5178328024934102778</id><published>2009-03-09T23:51:00.000-07:00</published><updated>2009-08-05T05:19:25.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='dos'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Executing multiple mvn commands from a Windows bat file</title><content type='html'>&lt;!-- multiple maven commands in bat file --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- multiple maven commands in bat file --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- multiple maven commands in bat file --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- how to execute maven command from batch file --&gt;&lt;br /&gt;&lt;!-- batch file stops after maven command  --&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When running Maven, if you try to run multiple Maven commands in a batch (.bat) file, it only runs the first one and exits to the command prompt&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;mvn clean&lt;br /&gt;mvn package&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This occurs since mvn itself is a bat file.&lt;br /&gt;&lt;br /&gt;To overcome this, you need to stop Windows passing control to the mvn.bat script by using the call command for each call to mvn.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;call mvn clean&lt;br /&gt;call mvn package&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Additionally, to catch failures you will need to do this&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;call mvn clean&lt;br /&gt;echo Exit Code = %ERRORLEVEL%&lt;br /&gt;if not "%ERRORLEVEL%" == "0" exit /b&lt;br /&gt;&lt;br /&gt;call mvn package&lt;br /&gt;echo Exit Code = %ERRORLEVEL%&lt;br /&gt;if not "%ERRORLEVEL%" == "0" exit /b&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;!-- multiple maven commands in bat file --&gt;&lt;br /&gt;&lt;!-- win batch mvn  --&gt;&lt;br /&gt;&lt;!-- script bat mvn install:install-file -Dfile  --&gt;&lt;br /&gt;&lt;!-- windows script bat file mvn install  --&gt;&lt;br /&gt;&lt;!-- windows script bat file mvn install  --&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;A failure throws an ERRORLEVEL higher than 0.&lt;br /&gt;Otherwise it will keep moving ahead even if it fails. &lt;br /&gt;&lt;br /&gt;Note: if you're using maven 2.0.7 or older, there is a possibility that the mvn does not return an ERRORLEVEL &gt; 0 for the process to exit.&lt;br /&gt;&lt;br /&gt;Lots of examples are available here &lt;a href="http://www.google.co.uk/search?hl=en&amp;amp;q=mvn+exit+ERRORLEVEL&amp;amp;meta"&gt;http://www.google.co.uk/search?hl=en&amp;amp;q=mvn+exit+ERRORLEVEL&amp;amp;meta&lt;/a&gt;=&lt;br /&gt;&lt;br /&gt;&lt;!-- mutiple maven exit from batch  --&gt;&lt;br /&gt;&lt;!-- mutiple maven exit from batch  --&gt;&lt;br /&gt;&lt;!-- bat file maven commands --&gt;&lt;br /&gt;&lt;!-- bat file maven commands --&gt;&lt;br /&gt;&lt;!-- after mvn install script stops  --&gt;&lt;br /&gt;&lt;!-- maven exit ERRORLEVEL  --&gt;&lt;br /&gt;&lt;!-- maven exit ERRORLEVEL  --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- windows bat mvn install many files  --&gt;&lt;br /&gt;&lt;!-- windows bat mvn install many files  --&gt;&lt;br /&gt;A simple test to check if your version allows this - run the commands below in a bat file.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;call mvn unknown&lt;br /&gt;echo Exit Code = %ERRORLEVEL%&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- mvn in batch file  --&gt;&lt;br /&gt;&lt;!-- mvn in batch file  --&gt;&lt;br /&gt;&lt;!-- bat calling maven exit code --&gt;&lt;br /&gt;&lt;!-- bat calling maven exit code --&gt;&lt;br /&gt;&lt;!-- running maven using bat file  --&gt;&lt;br /&gt;&lt;!-- running maven using bat file  --&gt;&lt;br /&gt;&lt;br /&gt;You should get a Failure with exit code 1 as below.&lt;br /&gt;If it does not fail, then upgrade to a higher version of Maven in which the issue is fixed.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;D:\maven-2.0.7\bin&gt;call mvn unknown&lt;br /&gt;[INFO] Scanning for projects...&lt;br /&gt;[INFO] ----------------&lt;br /&gt;[ERROR] BUILD FAILURE&lt;br /&gt;[INFO] ----------------&lt;br /&gt;[INFO] Invalid task 'unknown': you must specify a valid lifecycle phase, or a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal[INFO] ----------------&lt;br /&gt;[INFO] For more information, run Maven with the -e switch&lt;br /&gt;[INFO] ----------------&lt;br /&gt;[INFO] Total time: &lt; 1 second&lt;br /&gt;[INFO] Finished at: Tue Mar 10 12:07:12 GMT+05:30 2009&lt;br /&gt;[INFO] Final Memory: 1M/2M&lt;br /&gt;[INFO] ----------------&lt;br /&gt;Exit Code = 1&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Learnt the hard way that the call to mvn must immediately be followed by the checking of the ERRORLEVEL.&lt;br /&gt;&lt;br /&gt;Our build.bat script measures time taken for each step like below:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;time /t&lt;br /&gt;call mvn install&lt;br /&gt;time /t&lt;br /&gt;if not "%ERRORLEVEL%" == "0" exit /b&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In this case, it loses the ERRORLEVEL value from the mvn command.&lt;br /&gt;Hence we need to ensure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;time /t&lt;br /&gt;call mvn install&lt;br /&gt;if not "%ERRORLEVEL%" == "0" exit /b&lt;br /&gt;time /t&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-5178328024934102778?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/5178328024934102778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/03/executing-multiple-mvn-commands-from.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/5178328024934102778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/5178328024934102778'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/03/executing-multiple-mvn-commands-from.html' title='Executing multiple mvn commands from a Windows bat file'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2932121033150800498</id><published>2009-02-23T22:13:00.000-08:00</published><updated>2009-02-23T22:45:11.762-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='a r rahman'/><title type='text'>A Tribute to the Divine Genius of A R Rahman</title><content type='html'>&lt;p&gt;Having won at the Oscars and the Golden Globes, A. R. Rahman is getting the recognition he deserves for his genius. Personally I do not rate Slumdog Millionaire among his top 5 albums even. He's composed for over 110 albums and a good debate on his best work is available &lt;a href="http://memsaabstory.wordpress.com/2009/01/13/my-fifteen-favorite-songs-by-ar-rahman/"&gt;here &lt;/a&gt;&lt;/p&gt;&lt;p&gt;My post today is on Rahman's truly divine gift. Some of his music makes one feel blessed to be just listening to the soul-stirring  melody - and truly truly you close your eyes and feel you are in another land - sitting obeisant in front of God.&lt;br /&gt;His own philosphy as written on this &lt;a href="http://www.itimes.com/public_content.php?cid=60146"&gt;blog &lt;/a&gt; states&lt;br /&gt;"Music is my means of connecting with the divine. What cannot be put into words, can be expressed through music."&lt;br /&gt;&lt;br /&gt;It's well known that he is a follower of Sufism - and there are various songs which evoke that music.  But you sometimes cannot believe that one man can put together all of this music. A true disciple of music in it's forms and variations, his music has blended such diverse techniques to create sound you never could imagine.&lt;br /&gt;Among all the musical wonders he's produced over the ages the ones I'm writing about today are the devotional tracks appearing in various OSTs.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sufi / Qawwali&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;“Khwaja Mere Khwaja” from Jodhaa Akbar&lt;/p&gt;&lt;p&gt;"Arziyan" from Delhi-6. The first two lines of this humble tribute sung by Javed Ali and Kailas Kher are just lovely and the rest is very well arranged.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;"Tere Bina" from Guru&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The bhajans&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;“O Paalanhaare” from Lagaan (sung by Lata Mangeshkar and Udit Narayan).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;"Mann Mohana” from Jodhaa Akbar (sung by Bela Shende) - the violin interlude is such splendour. &lt;span style="font-weight: bold;"&gt;This is my favourite Rahman song&lt;/span&gt;. It must be heard with one's eyes closed to really feel the maetro's magic and oneness with God. &lt;span style="font-style: italic;"&gt;Note to self: dont listen while driving.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;"Aarti (Tumre Bhavan Mein)" from Delhi-6 is extremely simple with just the sitar stringing in the background but so moving. Sung in unison by Rekha Bharadwaj, Kishori Gowarikar, Shraddha Pandit and Sujata Majumdar&lt;br /&gt;&lt;br /&gt;And his interpretation of the Sikh prayer "Ik Onkar" from Rang De Basanti - also picturized very well in the movie - simple and devotional. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Also must mention "Maa Tujhe Salaam" part of an album released to celebrate India’s 50th year of Independence in 1997.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2932121033150800498?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2932121033150800498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/tribute-to-divine-genius-of-r-rahman.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2932121033150800498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2932121033150800498'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/tribute-to-divine-genius-of-r-rahman.html' title='A Tribute to the Divine Genius of A R Rahman'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7241503378968168028</id><published>2009-02-20T01:38:00.000-08:00</published><updated>2009-02-20T01:53:23.692-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java code'/><title type='text'>Bad Java code with good intentions</title><content type='html'>My friend Deepak sent me a real-life example of the following Java code. Let's give the developer the credit of following &lt;strong&gt;defensive coding&lt;/strong&gt; techniques. [Rather than calling him a dumb-a$$]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;String flashPath = (String)request.getAttribute("flashPath");&lt;br /&gt;String flashPathPath = flashPath.toString();&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sathya improved on it by adding checks &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;String flashPath = (String)request.getAttribute("flashPath");&lt;br /&gt;If (flashPath instance of java.lang.String){&lt;br /&gt;    String flashPathPath = flashPath.toString();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So let's work on this some more&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;String flashPath = (String)request.getAttribute("flashPath");&lt;br /&gt;If (flashPath instance of java.lang.String){&lt;br /&gt;            try{&lt;br /&gt;               String flashPathPath = (String) flashPath.toString(); //Let's cast it once more to be sure, if it escaped the first time, it'll surely get caught here.&lt;br /&gt;            }&lt;br /&gt;            catch (ClassCastException e)&lt;br /&gt;            {&lt;br /&gt;               // Don’t cast it &lt;br /&gt;              String flashPathPath = flashPath.toString(); &lt;br /&gt;            }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now this is open to all to further obfuscate.&lt;br /&gt;How complicated can you make one line of code?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7241503378968168028?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7241503378968168028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/bad-java-code-with-good-intentions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7241503378968168028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7241503378968168028'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/bad-java-code-with-good-intentions.html' title='Bad Java code with good intentions'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-4614547468032931201</id><published>2009-02-13T03:56:00.000-08:00</published><updated>2009-02-23T01:09:24.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hindi music'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='zach braff'/><category scheme='http://www.blogger.com/atom/ns#' term='indie'/><title type='text'>Now Playing Jan/Feb 2009</title><content type='html'>Music albums that I've picked up and liked over the last 2 months:&lt;br /&gt;&lt;br /&gt;Best of Led Zeppelin&lt;br /&gt;Keane - Under the Iron Sea&lt;br /&gt;The Weepies - Say I Am You&lt;br /&gt;Joshua Radin - Simple Times&lt;br /&gt;Delhi 6 - OST&lt;br /&gt;Luck By Chance - OST&lt;br /&gt;Dashboard Confessional - Dusk and Summer&lt;br /&gt;Dev D - OST&lt;br /&gt;&lt;br /&gt;I seem to like most of the Indie picks from Zach Braff's movies - "The Last Kiss" and "Garden State" - and the Scrubs OST.&lt;br /&gt;In addition to the above albums, Cary Brothers, Zero 7 and Imogen Heap were stumbled upon off various Scrubs episodes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-4614547468032931201?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/4614547468032931201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/now-playing-janfeb-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/4614547468032931201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/4614547468032931201'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/now-playing-janfeb-2009.html' title='Now Playing Jan/Feb 2009'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2642772962602804561</id><published>2009-02-12T00:59:00.000-08:00</published><updated>2009-04-08T22:58:39.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><title type='text'>junit.report fails with OutOfMemoryError</title><content type='html'>Running too many testsuites in junit.report causes a failure with the message&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2009-02-11 08:33:25,664 [Thread-15] INFO ScriptRunner - junit.report:&lt;br /&gt;2009-02-11 08:33:25,667 [Thread-15] INFO ScriptRunner - [mkdir] Created dir: /a01/home/Construction_temp/reports/ebilling/junit&lt;br /&gt;2009-02-11 08:33:41,604 [Thread-14] WARN ScriptRunner - java.lang.OutOfMemoryError: PermGen space&lt;br /&gt;2009-02-11 08:33:41,605 [Thread-14] WARN ScriptRunner - PermGen space&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- junit.report java.lang.OutOfMemoryError Jose Kuzhivelil --&gt;&lt;br /&gt;&lt;!-- junit.report java.lang.OutOfMemoryError Jose Kuzhivelil --&gt;&lt;br /&gt;&lt;!-- junit.report java.lang.OutOfMemoryError Jose Kuzhivelil --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- junitreport java.lang.OutOfMemoryError  --&gt;&lt;br /&gt;&lt;br /&gt;Resolution:&lt;br /&gt;&lt;br /&gt;in the build.bat or build.sh, add more memory to the JVM process like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ANT_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=256m"&lt;br /&gt;export ANT_OPTS=$ANT_OPTS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- junitreport outofmemoryerror --&gt;&lt;br /&gt;&lt;!-- junitreport outofmemoryerror --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- junitreport permgen  --&gt;&lt;br /&gt;&lt;!-- junitreport permgen  --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- java.lang.OutOfMemoryError junit-report --&gt;&lt;br /&gt;&lt;!-- java.lang.OutOfMemoryError junit-report --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2642772962602804561?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2642772962602804561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/junitreport-fails-with-outofmemoryerror.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2642772962602804561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2642772962602804561'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/junitreport-fails-with-outofmemoryerror.html' title='junit.report fails with OutOfMemoryError'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-1039450662271799672</id><published>2009-02-05T22:03:00.000-08:00</published><updated>2009-05-15T03:36:50.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='NFS files'/><category scheme='http://www.blogger.com/atom/ns#' term='unix commands'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Useful Unix Commands - Part 2</title><content type='html'>A selection of useful find commands&lt;br /&gt;&lt;br /&gt;=== Find User ===&lt;br /&gt;&lt;br /&gt;fuser displays the PIDs of processes using the specified files or file systems.&lt;br /&gt;fuser command is very useful in getting rid of the .nfs files created when processes are killed. The .nfs* names refer to files that have been deleted but are still being held open by a running process.&lt;br /&gt;&lt;br /&gt;You can find .nfs files using ls -la &lt;br /&gt;&lt;br /&gt;rm does not work in removing .nfs files - use fuser to find the process that's locking the file and then kill the process&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; /usr/sbin/fuser {filename} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; kill -9 {pid} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you stop the processes that have them open, the files will be tidied-up and removed by the file server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you're interested a bit of general background follows:&lt;br /&gt;&lt;br /&gt;Most operating systems, including UNIX, operate a policy of not actually removing a deleted file (and freeing up it's data blocks) until the last process that has the file open closes it. So, if a running process has a file open and you use the rm(1) command to delete the file the data blocks on the disk will not be freed up by the OS until the process that has the file open closes it.&lt;br /&gt;&lt;br /&gt;On a UNIX host using local disk store this behaviour can manifest itself it some seemingly confusing situations. For example, you may wish to free up some space on a file system that's used 900 MB of it's 1GB quota. You have a large file, 200MB say, named myjava.jar that you believe is no longer required, but is actually currently open in your WebLogic server. Not knowing this you delete myjava.jar and do an ls(1) command to see that the file is no longer listed. However, when you use the df(1) command it still reports that 900 MB of it's 1GB quota is used because your WebLogic server still has the file open. When you shutdown the WebLogic server or the server closes the file the disk space will be released and df(1) will report 700MB of it's 1GB is used.&lt;br /&gt;&lt;br /&gt;If the file that is removed is on NFS mounted store then it is possible for a file to be deleted on one client whilst still being open on another client. In this situation the same rule of not actually deleting the file until the last process with it open closes it still applies. However, in order for the NFS file handle used by the client that still has the file open not to be broken a filename reference must be maintained. In order to achieve this and remove the files name from the directory ( so it doesn't show up in an ls command output) the NFS file server renames the deleted file to a name beginning '.nfs'. These are the files you are seeing. When the last process with these files open dies or closes them they will be tidied up and removed. Trying to delete them before they are closed will only result in the file being renamed again. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=== Find Class within Jar file ===&lt;br /&gt;&lt;br /&gt;To find a class within a binary jar file&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; for i in `ls *.jar`; do (jar tf $i  grep '{classname}' ) &amp;amp;&amp;amp; echo $i;done   &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you want to search within all subdirectories use this&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; for i in `find . -name ‘*.jar’`; do (jar tf $i  grep '{CLASSNAME}' ) &amp;amp;&amp;amp; echo $i;done &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;=== Find string within file of name ===&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;find . -name *.xml -exec grep &lt;string&gt; {} \;&lt;br /&gt;&lt;br /&gt;example&lt;br /&gt;&lt;br /&gt;find . -name web.xml -exec grep -i servlet {} \;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=== Grep within zip file without unzipping it ===&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;gzip -c -d {file}.gz | grep {string}&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;gzip -c -d admin_access.log0001_4Dec08_0147.gz | grep -i adq | wc -l&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;=== Find process using the port ===&lt;br /&gt;&lt;br /&gt;The easy way to do this is using netstat passing the port number &lt;br /&gt;&lt;br /&gt;netstat -a | grep 61014&lt;br /&gt;&lt;br /&gt;If that does not help getting a pid, run this line below&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for i in `ls /proc`; do pfiles $i | grep AF_INET | grep 61014 ; done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;br /&gt;pfiles: permission denied: 12363&lt;br /&gt;sockname: AF_INET 0.0.0.0 port: 61014&lt;br /&gt;pfiles: permission denied: 12384&lt;br /&gt;&lt;br /&gt;this shows the process appearing in between pids 12363 and 12384 uses that port.&lt;br /&gt;&lt;br /&gt;ls /proc&lt;br /&gt;gives the PIDs in order as .. 12363, 12369, 12384 ..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ps -ef  grep 12369&lt;br /&gt;wlsuser 12369 7852 0 01:07:40 ? 4:42 /opt/bea/jdk142_05/bin/java -server -DresKBD -Xms512m -Xmx512m -XX:MaxPermSize=&lt;br /&gt;&lt;br /&gt;gave the process details which was using the port&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-1039450662271799672?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/1039450662271799672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/useful-unix-commands-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/1039450662271799672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/1039450662271799672'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/useful-unix-commands-part-2.html' title='Useful Unix Commands - Part 2'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-5616121584488149663</id><published>2009-02-03T22:29:00.000-08:00</published><updated>2009-05-15T03:32:12.839-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='prstat'/><category scheme='http://www.blogger.com/atom/ns#' term='unix commands'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Useful Unix commands - part 1</title><content type='html'>CPU Usage&lt;br /&gt;The prstat command displays information about active processes on the system and resource consumption. By default, prstat displays information about all processes sorted by CPU usage.&lt;br /&gt;&lt;br /&gt;The prstat -s cpu -n 5 command is used to list the five processes that are consuming the most CPU resources. The -s cpu flag tells prstat to sort the output by CPU usage (This is a default flag set, so can be skipped). The -n 5 flag tells prstat to restrict the output to the top five processes.&lt;br /&gt;&lt;br /&gt;Adding the -a option to any prstat command will identify how many processes each user is using, what percent of the CPUs, and how much memory, they are using on a system&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;prstat -a &lt;/pre&gt;&lt;br /&gt;The ps command displays information about currently running processes. Pipe the output to search for specific processes&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; ps -ef  | grep java&lt;br /&gt;&lt;br /&gt;/usr/ucb/ps -auxwww | grep {pid} &lt;/pre&gt;&lt;br /&gt;This command gives the complete classpath and start parameters of the process mentioned in pid&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/usr/ucb/ps -auxwww | grep 19138 &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;user 19138 0.4 2.31272184732136 ? S Jun 01 342:11 /resolve/j2sdk1.4.2_03/bin/java -Xmx1024m -Xms1024m -XX:NewSize=341m -XX:MaxNewSize=341m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:+DisableExplicitGC -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime -Xloggc:/resolve/CPEE3112/composer/log/pa3.gc  -Drmiport=61050 -Dg2config.home=/resolve/CPEE3112/composer/conf -Dg2config.baseipport=61020 -Dg2config.instance=Engine14 -Dg2.processid=3 -cp /resolve/lib/any_custom_libs.jar:/resolve/lib/G2.jar:/resolve/lib/oracle_10_2_0_1_0jdbc.jar com.xyz.platform.Main -recover &amp;amp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;prstat -L -p {pid}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The above cmd gives the summary of lightweight processes which make up the process. More is at an example I gave &lt;a href="http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html"&gt;here &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The top command provides an overview of CPU and memory utilization, and a list of the top consumers of CPU, it updates it's display every few seconds so you can monitor continuously. Use http://www.groupsys.com/top/display/ to view details of the stats shown&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;top&lt;br /&gt;&lt;br /&gt;sar -s&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Memory Usage&lt;br /&gt;vmstat 5 vmstat reports virtual memory statistics regarding kernel, thread, virtual memory, and disk, trap, and CPU activity. vmstat also helps calculate the average page scan rate.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Below is the vmstat output&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;vmstat 5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;kthr memory page disk faults cpu&lt;br /&gt;&lt;br /&gt;r b w swap free re mf pi p fr de sr s0 s1 s2 s3 in sy cs us sy id&lt;br /&gt;&lt;br /&gt;0 0 0 11456 4120 1 41 19 1 3 0 2 0 4 0 0 48 112 130 4 14 82&lt;br /&gt;&lt;br /&gt;0 0 1 10132 4280 0 4 44 0 0 0 0 0 23 0 0 211 230 144 3 35 62&lt;br /&gt;&lt;br /&gt;0 0 1 10132 4616 0 0 20 0 0 0 0 0 19 0 0 150 172 146 3 33 64&lt;br /&gt;&lt;br /&gt;0 0 1 10132 5292 0 0 9 0 0 0 0 0 21 0 0 165 105 130 1 21 78&lt;br /&gt;&lt;br /&gt;Note: The first line of vmstat shows a cumulative value and must be ignored. sr is the pages scanned by clock algorithm.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On Unix, to find out how much RAM is present on a machine, use&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;prtconf grep 'Memory size:'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;On Linux, the same is done using&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;free -m&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Disk Space&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;df -ek&lt;br /&gt;&lt;br /&gt;du -h&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-5616121584488149663?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/5616121584488149663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/02/useful-unix-commands-part-1.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/5616121584488149663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/5616121584488149663'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/02/useful-unix-commands-part-1.html' title='Useful Unix commands - part 1'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7717116928975193521</id><published>2009-01-29T21:52:00.000-08:00</published><updated>2009-01-29T22:22:40.852-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='findbugs'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='java.lang.reflect.InvocationTargetException'/><category scheme='http://www.blogger.com/atom/ns#' term='xslt'/><title type='text'>Findbugs XSLT style Error java.lang.reflect.InvocationTargetException</title><content type='html'>Tried running out-of-the-box Findbugs 1.3 with Ant 1.6 and Ant 1.7, on JDK 1.4 and JDK 1.5&lt;br /&gt;It throws an error for the task findbugs.report which is a simple XSLT transform using a stylesheet. Peculiarly this fails only on Windows but works fine on Unix.&lt;br /&gt;build.xml contains:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style&lt;br /&gt;basedir="${build.report.temp}"&lt;br /&gt;    destdir="${build.report}/findbugs"&lt;br /&gt;    includes="findbugs-post.xml"&lt;br /&gt;    style="${script.tools}/findbugs/tools/xsl/report.xsl"&amp;gt;&lt;br /&gt;   &amp;lt;param&lt;br /&gt;      name="messages.xml"&lt;br /&gt;      expression="${script.tools}/findbugs/tools/xsl/messages.xml"/&amp;gt;&lt;br /&gt;   &amp;lt;param&lt;br /&gt;      name="output.dir"&lt;br /&gt;      expression="${build.report}/findbugs"/&amp;gt;&lt;br /&gt;  &amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The error is&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[style] Processing D:\Construction\reports\ebilling\tmp\findbugs-post.xml to D:\Construction\reports\ebilling\findbugs\findbugs-post.html &lt;br /&gt;[style] Loading stylesheet D:\Construction\buildtools\bin\findbugs\tools\xsl\report.xsl &lt;br /&gt;[style] : Error! java.lang.reflect.InvocationTargetException &lt;br /&gt;[style] Failed to process D:\Construction\reports\ebilling\tmp\findbugs-post.xml&lt;br /&gt;BUILD FAILED&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;D:\Construction\buildtools\dbscripts\findbugs.xml:67: javax.xml.transform.TransformerException: com.sun.org.apache.xalan.internal.xsltc.TransletException: java.lang.reflect.InvocationTargetException&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The problem is the &lt;/span&gt; &amp;lt;param&amp;gt; passed in with an absolute path fails for some reason - but it works when the path is relative to the stylesheet referenced in the &lt;span style="font-family:courier new;"&gt;style&lt;/span&gt; attribute. In this case the stylesheet is at &lt;span style="font-family:courier new;"&gt;style="${script.tools}/findbugs/tools/xsl/report.xsl"&lt;/span&gt;&lt;br /&gt;So we changed:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;param expression="${script.tools}/findbugs/tools/xsl/messages.xml" name="messages.xml"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to a path relative to the &lt;span style="font-family:courier new;"&gt;report.xsl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;param expression="./messages.xml" name="messages.xml"&amp;gt;&lt;/span&gt;&lt;br /&gt;and that worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7717116928975193521?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7717116928975193521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/01/findbugs-xslt-style-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7717116928975193521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7717116928975193521'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/01/findbugs-xslt-style-error.html' title='Findbugs XSLT style Error java.lang.reflect.InvocationTargetException'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2916128184660745404</id><published>2009-01-29T02:31:00.000-08:00</published><updated>2009-01-29T02:40:08.567-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='wordle'/><category scheme='http://www.blogger.com/atom/ns#' term='tag clouds'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='labels'/><title type='text'>Tag Clouds Jan 2009</title><content type='html'>&lt;a href="http://www.wordle.net/create"&gt;www.wordle.net/create&lt;/a&gt; makes pretty tag clouds out of any URL. Here is a comparison of my Twitter stream against my Blogs. Should do this once in a while&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SYGGUBoXO5I/AAAAAAAAACw/sMiNn9VVQgA/s1600-h/Twitter.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5296662315357649810" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SYGGUBoXO5I/AAAAAAAAACw/sMiNn9VVQgA/s320/Twitter.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SYGGUTw5YeI/AAAAAAAAAC4/af5Uqjy-UoU/s1600-h/Blogger.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5296662320225280482" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 198px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SYGGUTw5YeI/AAAAAAAAAC4/af5Uqjy-UoU/s320/Blogger.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2916128184660745404?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2916128184660745404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/01/tag-clouds-jan-2009.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2916128184660745404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2916128184660745404'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/01/tag-clouds-jan-2009.html' title='Tag Clouds Jan 2009'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ER-q_TZ-wqk/SYGGUBoXO5I/AAAAAAAAACw/sMiNn9VVQgA/s72-c/Twitter.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-1377070778583998386</id><published>2009-01-13T01:58:00.001-08:00</published><updated>2010-02-18T12:16:16.735-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread dump'/><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='app server'/><category scheme='http://www.blogger.com/atom/ns#' term='pstack'/><category scheme='http://www.blogger.com/atom/ns#' term='samurai'/><category scheme='http://www.blogger.com/atom/ns#' term='prstat'/><category scheme='http://www.blogger.com/atom/ns#' term='execute thread'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='application support'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>App Server High CPU or Low Threads - Support Team Actions</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;!-- Weblogic consuming high CPU --&gt;&lt;br /&gt;&lt;!-- Weblogic consuming high CPU --&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- how to analyze stuck threads --&gt;&lt;br /&gt;&lt;!-- how to analyze thread dumps --&gt;&lt;br /&gt;&lt;!-- how to analyze weblogic stuck threads --&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Occasionally Weblogic/JEE app servers run into High CPU (&gt;70% or as per your app-defined thresholds) , then below is a list of actions and investigations that the support teams need to do.&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Check prstat –L –p &lt;pid&gt;Capture into a file if required.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Output kill -3 &lt;pid&gt;into a file i.e. take thread dump. On Weblogic 10,you can do this from the Admin console as well &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Output pstack &lt;pid&gt;into a file &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Repeat this 4 times at 5 second intervals. At the end, you will have 5 sets of prstat, TD and pstack files. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Run the TDs through &lt;a href="http://yusuke.homeip.net/samurai/en/index.html"&gt;Samurai &lt;/a&gt;or &lt;a href="https://tda.dev.java.net/"&gt;TDA&lt;/a&gt; to identify deadlocks. These tools show a graphical view of what each thread is doing at each point of time (when the thread dump was taken).&lt;br /&gt;The image below from Samurai shows RED blocks which are Stuck, and Green with &amp;lt; in them. Both of these need to be analyzed by clicking on the link in blue and seeing what line the thread is at. The Green ones with &amp;lt; might not be stuck, but they were at the same line as in previous thread dump and that indicates a potential problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_ER-q_TZ-wqk/S32dvBnLBJI/AAAAAAAAAF0/mwU2VnLcp_g/s1600-h/samuraiTD.JPG"&gt;&lt;img style="CURSOR: hand" id="BLOGGER_PHOTO_ID_5439677356145575058" border="0" alt="" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/S32dvBnLBJI/AAAAAAAAAF0/mwU2VnLcp_g/s400/samuraiTD.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Then analyze the prstat and pstack for any particular thread issues. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;On the prstat, look for the LWP number on the right hand corner for high cpu and any long time in action. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Convert the lwp number to hexa decimal value as follows:&lt;br /&gt;echo &lt;lwp&gt;nawk '{printf("%d=0x%x\n",$1,$1)}' &lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the thread dump, search for "nid=&lt;hexa&gt;" these threads could be the issue for the application. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the pstack outputs, check for the LWP numbers and confirm that the threads show the java trace. &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Below is an example - Note this is indicative and not a proper instance of a slow-performing server.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1. prstat -a shows the java process consuming 42.6% and it has 180 &lt;a class="external text" title="http://en.wikipedia.org/wiki/Light-weight_process" href="http://en.wikipedia.org/wiki/Light-weight_process" rel="nofollow"&gt;LWP (Light-weight processes)&lt;/a&gt; running. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;20677 wlsuser 1116M 526M sleep 1 0 2:20:54 42.6% java/180&lt;br /&gt;11922 wlsuser 232M 110M sleep 1 0 3:41:59 0.1% java/157&lt;br /&gt;29861 noaccess 198M 72M sleep 8 0 32:25:49 0.0% java/55&lt;br /&gt;18133 root 630M 55M sleep 27 0 12:25:57 0.0% java/60&lt;br /&gt;12107 wlsuser 927M 288M sleep 1 0 3:51:28 0.0% java/187&lt;br /&gt;29654 wlsuser 1270M 206M sleep 1 0 0:54:26 0.0% java/158&lt;br /&gt;2633 wlsuser 899M 217M sleep 1 0 7:06:10 0.0% java/382&lt;br /&gt;7431 wlsuser 880M 253M sleep 5 0 1:44:24 0.0% java/186&lt;br /&gt;1058 wlsuser 881M 241M sleep 1 0 3:11:35 0.0% java/182&lt;br /&gt;9864 wlsuser 4336K 3952K cpu21 59 0 0:00:00 0.0% prstat/1&lt;br /&gt;13789 wlsuser 1090M 208M sleep 17 0 0:30:44 0.0% java/210&lt;br /&gt;13147 wlsuser 635M 168M sleep 15 0 7:17:05 0.0% java/180&lt;br /&gt;7724 root 5728K 4112K sleep 60 0 33:54:37 0.0% vasd/1&lt;br /&gt;18131 root 2272K 1088K sleep 59 0 8:18:11 0.0% wrapper/1&lt;br /&gt;15397 root 2272K 1296K sleep 59 0 3:33:59 0.0% procmon/1&lt;/span&gt;&lt;br /&gt;2. prstat -Lp 20677 gives the breakdown of these 180 LWPs&lt;br /&gt;The top 2 can be seen to be consuming 10% CPU each and are running for longer than 15 minutes. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/LWPID&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep   58    0   0:16:03 10.3% java/120&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep   24    0   0:15:15 10.1% java/123&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    3    0   0:03:36 4.0% java/23&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    5    0   0:01:42 2.0% java/21&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    9    0   0:03:38 2.0% java/20&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    9    0   0:00:38 1.7% java/19&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    4    0   0:00:42 0.0% java/18&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    4    0   0:00:36 0.0% java/17&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    4    0   0:00:34 0.0% java/16&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    1    0   0:00:42 0.0% java/15&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    4    0   0:00:42 0.0% java/10&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    6    0   0:07:43 0.0% java/8&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    3    0   0:00:39 0.0% java/7&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    1    0   0:00:40 0.0% java/4&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    8    0   0:00:39 0.0% java/2&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep   29    0   0:04:55 0.0% java/121&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    1    0   0:11:52 0.0% java/126&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    1    0   0:00:05 0.0% java/119&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep   43    0   0:00:27 0.0% java/122&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep   28    0   0:00:03 0.0% java/118&lt;br /&gt;&lt;br /&gt;20677 wlsuser  1116M  526M sleep    1    0   0:12:43 0.0% java/125&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. Run the cmd to convert the LWP decimal to Hex&lt;br /&gt;echo 120 nawk '{printf("%d=0x%x\n",$1,$1)}' 120=0x78&lt;br /&gt;echo 123 nawk '{printf("%d=0x%x\n",$1,$1)}' 123=0x7b&lt;br /&gt;Now we need to investigate what these 2 threads are doing.&lt;br /&gt;&lt;br /&gt;4. Check the Thread dump for the &lt;strong&gt;nid=0x78&lt;/strong&gt;. It shows&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '83' for queue: 'wlr3Queue'" daemon prio=5 tid=0x00a886f0 nid=0x78 waiting for monitor entry [c3afe000..c3affc28]&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.Category.callAppenders(Category.java:204)&lt;br /&gt;&lt;br /&gt;- waiting to lock &amp;lt;0xdc8e9080&gt; (a org.apache.log4j.spi.RootLogger)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.Category.forcedLog(Category.java:391)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.Category.debug(Category.java:260)&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Running the above TD through Samurai also shows that Execute Thread 83, has been stuck for a while. It also shows that the same object &lt;strong&gt;&amp;lt;0xdc8e9080&gt;&lt;/strong&gt; is being locked by another Thread which happens to be the &lt;strong&gt;nid=0x7b&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;"ExecuteThread: '86' for queue: 'wlr3Queue'" daemon prio=5 tid=0x00a85730 nid=0x7b runnable [c3efd000..c3effc28]&lt;br /&gt;&lt;br /&gt;at java.io.FileOutputStream.writeBytes(Native Method)&lt;br /&gt;&lt;br /&gt;at java.io.FileOutputStream.write(FileOutputStream.java:260)&lt;br /&gt;&lt;br /&gt;at java.io.BufferedOutputStream.write(BufferedOutputStream.java:106)&lt;br /&gt;&lt;br /&gt;- locked &lt;0xd8b55a70&gt; (a java.io.BufferedOutputStream)&lt;br /&gt;&lt;br /&gt;at java.io.PrintStream.write(PrintStream.java:258)&lt;br /&gt;&lt;br /&gt;- locked &lt;0xd88512c8&gt; (a java.io.PrintStream)&lt;br /&gt;&lt;br /&gt;at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:336)&lt;br /&gt;&lt;br /&gt;at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)&lt;br /&gt;&lt;br /&gt;at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)&lt;br /&gt;&lt;br /&gt;at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)&lt;br /&gt;&lt;br /&gt;- locked &lt;0xdce03ae8&gt; (a java.io.OutputStreamWriter)&lt;br /&gt;&lt;br /&gt;at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:58)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:316)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.WriterAppender.append(WriterAppender.java:160)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)&lt;br /&gt;&lt;br /&gt;- locked &lt;0xdc8eeb60&gt; (a org.apache.log4j.ConsoleAppender)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)&lt;br /&gt;&lt;br /&gt;at org.apache.log4j.Category.callAppenders(Category.java:206)&lt;br /&gt;&lt;br /&gt;- locked &lt;0xdc8e9080&gt; (a org.apache.log4j.spi.RootLogger)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Thus there is an issue around the log4j writing into log files, which needs further investigation.&lt;br /&gt;&lt;br /&gt;In this case, one issue identified was that the log4j was in DEBUG mode which should not be the case in a Production platform. Thus there was unnecessary logging taking place.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Finally, a look at the pstack outputs for the two LWP 120 and 123 confirms what the LWPs were doing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;----------------- lwp# 120 / thread# 120 --------------------&lt;br /&gt;ff341758 lwp_mutex_timedlock (f66e68, 0)&lt;br /&gt;fedbbb60 __1cLOptoRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_ (da5a6848, c3aff0b0, a886f0, da5b6980, d6d15e88, 0) + 84&lt;br /&gt;f9c342dc ???????? (da5a6848, c3aff0b0, da5b6980, d6d15e70, 0, c3aff0f8)&lt;br /&gt;fa643500 ???????? (da5c9fc0, 0, da5c9fc0, da5b6980, db3b3af8, 0)&lt;br /&gt;fa5c0e2c ???????? (da5c9fc0, f1c8e7a0, da5b6980, d6d15e70, 0, c3aff0f8)&lt;br /&gt;fa762524 ???????? (da5b65f8, d6d15e70, 0, f9c15ea0, 8, c3aff178)&lt;br /&gt;f9c4eec4 ???????? (da5b65f8, f52b9bf0, f0ab1c94, f9c160d0, 8, c3aff0f8)&lt;br /&gt;f9c05a8c ???????? (c3aff29c, b6, 0, f9c15ea0, 8, c3aff178)&lt;br /&gt;f9c05804 ???????? (c3aff33c, b6, 0, f9c15e50, c, c3aff210)&lt;br /&gt;f9c05804 ???????? (c3aff3cc, b6, 0, f9c15e50, c, c3aff2d8)&lt;br /&gt;f9c05804 ???????? (c3aff464, b6, 0, f9c15e50, c, c3aff358)&lt;br /&gt;f9c05804 ???????? (c3aff4f4, f1a8a5c8, 0, f9c15e50, c, c3aff400)&lt;br /&gt;f9c05a8c ???????? (c3aff58c, f084f340, 0, f9c163d0, c, c3aff490)&lt;br /&gt;f9c059d8 ???????? (c3aff674, b6, 0, f9c163d0, 4, c3aff518)&lt;br /&gt;f9c05804 ???????? (c3aff6fc, b6, 0, f9c15e50, 10, c3aff608)&lt;br /&gt;f9c05804 ???????? (c3aff760, d883f8c8, 0, f9c15e50, c, c3aff690)&lt;br /&gt;f9c4f278 ???????? (d6d15bc0, d883f8c8, d884f5a0, f0ac6f08, 4, c3aff720)&lt;br /&gt;fa0a23a4 ???????? (d884f5a0, d883f8c8, d6d15bc0, f9c15e50, c, c3aff7e8)&lt;br /&gt;f9c30f48 ???????? (d884f5a0, b6, 82bb, f9c16250, 82b9, 0)&lt;br /&gt;f9c05750 ???????? (c3aff8dc, b8, f373459c, f9c15e50, c, c3aff7e8)&lt;br /&gt;f9c05750 ???????? (c3aff98c, b6, 0, f9c16250, c, c3aff868)&lt;br /&gt;f9c05804 ???????? (c3aff9fc, d68129b0, 0, f9c15e50, c, c3aff920)&lt;br /&gt;f9c4947c ???????? (d68129b0, d8808160, f81fc000, f0818618, 8, c3aff9b8)&lt;br /&gt;fa114558 ???????? (d8808160, db3d24f0, f3745c98, f9c15e50, 8, c3affab0)&lt;br /&gt;fa14b064 ???????? (d8808160, f096a2a0, f81fc000, f0818618, d8808160, 9)&lt;br /&gt;f9cd2c38 ???????? (c3affb9c, c3affcf0, f3745c98, f9c15e50, 8, c3affab0)&lt;br /&gt;f9c0010c ???????? (c3affc28, c3affe90, a, f112bc70, 4, c3affb40)&lt;br /&gt;fed5bcf8 __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_ (c3affe88, c3affcf0, c3affda8, a886f0, a886f0, c3affd00) + 27c&lt;br /&gt;fee4a3e4 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_ (ff182000, a88c98, c3affd9c, c3affd98, c3affda8, a886f0) + 164&lt;br /&gt;fee5d5a8 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_ (c3affe88, c3affe84, c3affe7c, c3affe74, c3affe6c, a886f0) + 6c&lt;br /&gt;fee6e8f8 __1cMthread_entry6FpnKJavaThread_pnGThread__v_ (a886f0, a886f0, c69ff8, a88c98, 31a08c, fee67ed8) + 128&lt;br /&gt;fee67f00 __1cKJavaThreadDrun6M_v_ (a886f0, 78, 40, 0, 40, 0) + 284&lt;br /&gt;fee643e0 _start (a886f0, c3b00000, 0, 0, fee642ac, 1) + 134&lt;br /&gt;ff3404f4 _lwp_start (0, 0, 0, 0, 0, 0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------- lwp# 123 / thread# 123 --------------------&lt;br /&gt;ff341a08 _write (1, c3afab10, 6d, 0, 0, 22) + c&lt;br /&gt;fed54288 JVM_Write (1, c3afab10, 6d, 6d, c3afab10, daa519f8) + 68&lt;br /&gt;fe85e348 ???????? (c3afab10, c3afcbd0, c3afcbcc, 0, 6d, 22)&lt;br /&gt;fe85e1c8 Java_java_io_FileOutputStream_writeBytes (a88784, c3afcbd0, c3afcbcc, 0, 6d, daa519f8) + 34&lt;br /&gt;fa1e1608 ???????? (d8b55ad0, d8a5f6e8, 0, 6d, 0, c3afce50)&lt;br /&gt;fa1e3dc0 ???????? (d8b55a70, daa726a8, 0, 6d, d351afb0, daa519f8)&lt;br /&gt;f9dfae70 ???????? (d88512c8, daa726a8, 0, 6d, 0, c3afce50)&lt;br /&gt;fa033244 ???????? (daa63ed8, d351afb0, da845a80, 0, d351afb0, daa519f8)&lt;br /&gt;fa5fab54 ???????? (daa63ed8, d353dca0, da735c30, d351af98, 0, c3afce50)&lt;br /&gt;fa599d40 ???????? (da845a80, d351afb0, da845a80, 0, d351afb0, daa519f8)&lt;br /&gt;fa5977b8 ???????? (da845a80, d351afb0, da735c30, d351af98, 0, c3afce50)&lt;br /&gt;fa4945b8 ???????? (2, 0, da845a80, 0, d351afb0, daa519f8)&lt;br /&gt;fa5b98ec ???????? (db112a08, f1c8e7a0, da735c30, d351af98, 0, c3afce50)&lt;br /&gt;fa1a906c ???????? (db146dd8, f42a9fd0, d351af98, 1, f4262f28, f81fc000)&lt;br /&gt;f9c45dc8 ???????? (db146dd8, b7, 0, f9c152a0, 8, c3afcee0)&lt;br /&gt;f9c05804 ???????? (c3afd05c, b6, 0, f9c16118, c, c3afcf60)&lt;br /&gt;f9c05804 ???????? (c3afd0e4, b6, 0, f9c15e98, 10, c3afcff0)&lt;br /&gt;f9c05804 ???????? (c3afd174, b6, 0, f9c15e98, 10, c3afd078)&lt;br /&gt;f9c05804 ???????? (c3afd1dc, d34e93e0, 0, f9c15e98, 10, c3afd108)&lt;br /&gt;f9c63804 ???????? (d34756e0, d34e83d8, 0, f9c, 10, c3afd190)&lt;br /&gt;fa4bd36c ???????? (f9c, d34e93e0, f96, f95, d, c3afd268)&lt;br /&gt;f9c63e4c ???????? (d34e83a8, b6, c3afd338, 1, 4, 0)&lt;br /&gt;f9c05804 ???????? (c3afd338, f2ee27c0, 0, f9c15e98, 10, c3afd268)&lt;br /&gt;f9c46bb8 ???????? (d34e9388, f0866a58, f2ee27c0, 1, 4, c3afd2f8)&lt;br /&gt;fa6c56d8 ???????? (d34e9388, f2ee27c0, 2f, f0866a58, 0, c3afd478)&lt;br /&gt;fa6c6c70 ???????? (d34e9388, f0866a58, f2ee27c0, 1, 10, c3afd540)&lt;br /&gt;fa6ccbb8 ???????? (d34e9bc0, 0, 1, f0866a58, 8, c3afd478)&lt;br /&gt;fa67bf28 ???????? (d34e9bc0, d3502ac0, d34e82d8, 1, 10, c3afd540)&lt;br /&gt;fa67c168 ???????? (d34e82d8, e3c6b060, f0846b40, f0866a58, 8, c3afd478)&lt;br /&gt;fa64773c ???????? (d3502ab0, d3502ac0, d34e82d8, 1, 10, c3afd540)&lt;br /&gt;f9dc820c ???????? (d3502ab0, b6, c3afd628, f9c15e98, 10, 0)&lt;br /&gt;f9c05804 ???????? (c3afd634, b6, 0, f9c15e98, 10, c3afd540)&lt;br /&gt;f9c05804 ???????? (c3afd6b4, b6, 0, f9c15e98, 10, c3afd5c8)&lt;br /&gt;f9c05804 ???????? (c3afd73c, b8, 0, f9c15e50, c, c3afd650)&lt;br /&gt;f9c05804 ???????? (c3afd7c4, b6, 0, f9c16298, c, c3afd6d8)&lt;br /&gt;f9c05804 ???????? (c3afd844, b6, 0, f9c15e98, c, c3afd760)&lt;br /&gt;f9c05804 ???????? (c3afd8cc, b7, 0, f9c15e50, 8, c3afd7e0)&lt;br /&gt;f9c05804 ???????? (c3afd95c, b6, 0, f9c160d0, c, c3afd868)&lt;br /&gt;f9c05804 ???????? (c3afd9e4, b6, 0, f9c15e98, c, c3afd8f8)&lt;br /&gt;f9c05804 ???????? (c3afda74, f4405ee8, 0, f9c15e50, 8, c3afd978)&lt;br /&gt;f9c05a8c ???????? (c3afdb14, f45c37a0, 0, f9c163d0, c, c3afda08)&lt;br /&gt;f9c05a8c ???????? (c3afdba4, f47f5e30, 0, f9c16420, 14, c3afdaa8)&lt;br /&gt;f9c05a8c ???????? (c3afdc34, b6, 0, f9c163d0, 8, c3afdb38)&lt;br /&gt;f9c056e4 ???????? (c3afdcd4, b6, 0, f9c15e50, c, c3afdbd0)&lt;br /&gt;f9c05804 ???????? (c3afdd64, f4783158, 0, f9c15e50, c, c3afdc70)&lt;br /&gt;f9c059fc ???????? (c3afddfc, b7, 0, f9c163d0, c, c3afdcf0)&lt;br /&gt;f9c05804 ???????? (c3afdea4, b6, 0, f9c160d0, 8, c3afdd90)&lt;br /&gt;f9c05804 ???????? (c3afdf3c, b6, 0, f9c15e50, 8, c3afde30)&lt;br /&gt;f9c05774 ???????? (c3afdfc4, b6, 0, f9c15e50, 10, c3afded0)&lt;br /&gt;f9c05774 ???????? (c3afe064, b6, 0, f9c15e50, c, c3afdf58)&lt;br /&gt;f9c05804 ???????? (c3afe10c, b7, 0, f9c15e50, 14, c3afdfe8)&lt;br /&gt;f9c05804 ???????? (c3afe19c, b6, 0, f9c160d0, 10, c3afe0a0)&lt;br /&gt;f9c05804 ???????? (c3afe22c, b7, 0, f9c16250, 10, c3afe130)&lt;br /&gt;f9c05804 ???????? (c3afe2cc, f4591318, 0, f9c160d0, 10, c3afe1c0)&lt;br /&gt;f9c059d8 ???????? (c3afe374, b8, 0, f9c163d0, 8, c3afe260)&lt;br /&gt;f9c05804 ???????? (c3afe40c, b6, 0, f9c16250, 4, c3afe308)&lt;br /&gt;f9c05750 ???????? (c3afe4a4, b6, 0, f9c15e50, 8, c3afe398)&lt;br /&gt;f9c05804 ???????? (c3afe53c, b6, 0, f9c15e98, 8, c3afe440)&lt;br /&gt;f9c05804 ???????? (c3afe5e4, b6, 0, f9c15e98, 8, c3afe4c0)&lt;br /&gt;f9c05750 ???????? (c3afe684, f43eee20, 0, f9c15e50, 8, c3afe580)&lt;br /&gt;f9c059d8 ???????? (c3afe6e8, daa8e080, 0, f9c163d0, 8, c3afe618)&lt;br /&gt;f9c30d40 ???????? (ddb9b518, daa8e080, d1afafe8, f9c15e50, c, c3afe6a0)&lt;br /&gt;fa026230 ???????? (db146b88, daa8e080, d1afafe8, f9c16250, c, 0)&lt;br /&gt;fa0182bc ???????? (daf02128, daa8e080, d1afafe8, f9c15e50, c, c3afe7b0)&lt;br /&gt;f9c30f48 ???????? (daf02128, b6, c3afe89c, f9c16250, c, 0)&lt;br /&gt;f9c05750 ???????? (c3afe8a4, b8, 0, f9c15e50, c, c3afe7b0)&lt;br /&gt;f9c05750 ???????? (c3afe92c, b6, 0, f9c16250, c, c3afe840)&lt;br /&gt;f9c05750 ???????? (c3afe990, d1afaff8, 0, f9c15e50, 4, c3afe8c0)&lt;br /&gt;f9c4f278 ???????? (d1afaff8, daa8e5c0, d1b0b920, d1afb0f0, 4, c3afe950)&lt;br /&gt;fa7400a0 ???????? (61a80, d1afaff8, 1, daa00d48, 2710, 34)&lt;br /&gt;f9c30b04 ???????? (daf9f1a8, f441b8a8, c3afeb54, f9c163d0, f441b8a8, f441bd18)&lt;br /&gt;f9c059d8 ???????? (c3afeb54, f45f12b0, 0, f9c163d0, 8, c3afea48)&lt;br /&gt;f9c059d8 ???????? (c3afec1c, f0d5e7d8, 0, f9c163d0, 4, c3afead8)&lt;br /&gt;f9c059d8 ???????? (c3afecac, f43eee20, 0, f9c16420, 10, c3afeb98)&lt;br /&gt;f9c059d8 ???????? (c3afed54, f43eef20, 0, f9c163d0, 8, c3afec40)&lt;br /&gt;f9c059d8 ???????? (c3afedf4, b6, 0, f9c163d0, 8, c3afece0)&lt;br /&gt;f9c05750 ???????? (c3afee7c, b6, 0, f9c15e50, 8, c3afed88)&lt;br /&gt;f9c05750 ???????? (c3afef04, b6, 0, f9c15e50, c, c3afee18)&lt;br /&gt;f9c05750 ???????? (c3afef8c, b6, 0, f9c15e50, 14, c3afee98)&lt;br /&gt;f9c05750 ???????? (c3aff01c, b6, 0, f9c15e50, 14, c3afef20)&lt;br /&gt;f9c05750 ???????? (c3aff0ac, f43e7f08, 0, f9c15e50, c, c3afefb0)&lt;br /&gt;f9c059d8 ???????? (c3aff13c, f429d368, 0, f9c163d0, c, c3aff048)&lt;br /&gt;f9c059d8 ???????? (c3aff1e4, b6, 0, f9c15e50, 10, c3aff0c8)&lt;br /&gt;f9c05804 ???????? (c3aff29c, b6, 0, f9c15e50, c, c3aff178)&lt;br /&gt;f9c05804 ???????? (c3aff33c, b6, 0, f9c15e50, c, c3aff210)&lt;br /&gt;f9c05804 ???????? (c3aff3cc, b6, 0, f9c15e50, c, c3aff2d8)&lt;br /&gt;f9c05804 ???????? (c3aff464, b6, 0, f9c15e50, c, c3aff358)&lt;br /&gt;f9c05804 ???????? (c3aff4f4, f1a8a5c8, 0, f9c15e50, c, c3aff400)&lt;br /&gt;f9c05a8c ???????? (c3aff58c, f084f340, 0, f9c163d0, c, c3aff490)&lt;br /&gt;f9c059d8 ???????? (c3aff674, b6, 0, f9c163d0, 4, c3aff518)&lt;br /&gt;f9c05804 ???????? (c3aff6fc, b6, 0, f9c15e50, 10, c3aff608)&lt;br /&gt;f9c05804 ???????? (c3aff760, d883f8c8, 0, f9c15e50, c, c3aff690)&lt;br /&gt;f9c4f278 ???????? (d19577a8, d883f8c8, d884f5a0, f0ac6f08, 4, c3aff720)&lt;br /&gt;fa0a23a4 ???????? (d884f5a0, d883f8c8, d19577a8, f9c15e50, c, c3aff7e8)&lt;br /&gt;f9c30f48 ???????? (d884f5a0, b6, 786b, f9c16250, 7869, 0)&lt;br /&gt;f9c05750 ???????? (c3aff8dc, b8, f375bd34, f9c15e50, c, c3aff7e8)&lt;br /&gt;f9c05750 ???????? (c3aff98c, b6, 0, f9c16250, c, c3aff868)&lt;br /&gt;f9c05804 ???????? (c3aff9fc, d1a10f80, 0, f9c15e50, c, c3aff920)&lt;br /&gt;f9c4947c ???????? (d1a10f80, d8808160, f81fc000, f0818618, 8, c3aff9b8)&lt;br /&gt;fa114558 ???????? (d8808160, d1a10f80, f3745c98, f9c15e50, 8, c3affab0)&lt;br /&gt;fa14b064 ???????? (d8808160, f096a2a0, f81fc000, f0818618, d8808160, 9)&lt;br /&gt;f9cd2c38 ???????? (c3affb9c, c3affcf0, f3745c98, f9c15e50, 8, c3affab0)&lt;br /&gt;f9c0010c ???????? (c3affc28, c3affe90, a, f112bc70, 4, c3affb40)&lt;br /&gt;fed5bcf8 __1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_ (c3affe88, c3affcf0, c3affda8, a886f0, a886f0, c3affd00) + 27c&lt;br /&gt;fee4a3e4 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_ (ff182000, a88c98, c3affd9c, c3affd98, c3affda8, a886f0) + 164&lt;br /&gt;fee5d5a8 __1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_ (c3affe88, c3affe84, c3affe7c, c3affe74, c3affe6c, a886f0) + 6c&lt;br /&gt;fee6e8f8 __1cMthread_entry6FpnKJavaThread_pnGThread__v_ (a886f0, a886f0, c69ff8, a88c98, 31a08c, fee67ed8) + 128&lt;br /&gt;fee67f00 __1cKJavaThreadDrun6M_v_ (a886f0, 78, 40, 0, 40, 0) + 284&lt;br /&gt;fee643e0 _start (a886f0, c3b00000, 0, 0, fee642ac, 1) + 134&lt;br /&gt;ff3404f4 _lwp_start (0, 0, 0, 0, 0, 0)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Another thing to check is for any other processes that are running at the same time on the server.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;We faced a situation in the past, when backup processes ran at a fixed time on a particular directory, and caused CPU spikes. This was due to there being a huge number of old files in that directory.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;We ran a du on the /data filesystem and as soon as it hits /data/software/xyz/log it stops dead and the CPU goes up to 0% free. This filesystem is used for deployments as the name implies. The reason was when the backup hits this directory, it will attempt to do an ls or something similar, right? As it encounters the &lt;strong&gt;188994&lt;/strong&gt; logs that were there, it completely clogs up the CPU trying to process them. This is what is causing the CPU spikes. Whenever anyone or anything accesses this filesystem, everything stops.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-1377070778583998386?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/1377070778583998386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/1377070778583998386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/1377070778583998386'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/01/app-server-high-cpu-or-low-threads.html' title='App Server High CPU or Low Threads - Support Team Actions'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ER-q_TZ-wqk/S32dvBnLBJI/AAAAAAAAAF0/mwU2VnLcp_g/s72-c/samuraiTD.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-8086069414204747332</id><published>2009-01-08T23:16:00.000-08:00</published><updated>2009-01-09T05:26:18.111-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='satyam'/><category scheme='http://www.blogger.com/atom/ns#' term='raju'/><category scheme='http://www.blogger.com/atom/ns#' term='shares'/><category scheme='http://www.blogger.com/atom/ns#' term='stock exchange'/><title type='text'>On the Satyam fiasco</title><content type='html'>What a change a day makes.&lt;br /&gt;&lt;br /&gt;On Monday 5th Jan, the buzz was of a possible merger between Tech Mahindra and Satyam - and the lunchtime discussions were on swap ratios, cashless unions, share value pre and post merger.&lt;br /&gt;&lt;br /&gt;On Tuesday the news of Mr &lt;a href="http://timesofindia.indiatimes.com/Business/India_Business/Did_Raju_own_up_only_lesser_of_the_two_crimes/articleshow/3954373.cms"&gt;Ramalinga Raju's fraud &lt;/a&gt;broke - and suddenly everyone is left gobsmacked at the enormity of the scam.&lt;br /&gt;&lt;br /&gt;What exactly did Merrill Lynch find out about the missing cash? Is this what forced Raju's hand and made him confess?&lt;br /&gt;&lt;br /&gt;Is the money really non-existent - or as the auditors Price Waterhouse claim - all was in order in Sept 2008 - meaning money was siphoned out afterwards?&lt;br /&gt;&lt;br /&gt;If Satyam and PW officials are not commenting to SEBI, will the Merill Lynch folks have a better opinion for investigations to begin?&lt;br /&gt;&lt;br /&gt;Coupled with the oil company executives strike which has forced petrol pumps running dry, suddenly #Mumbai is off the front pages.&lt;br /&gt;However, the true tragedy is for the employees now with &lt;a href="http://timesofindia.indiatimes.com/No_salary_for_Satyam_staff_for_2_months/articleshow/3956699.cms"&gt;salaries being held back for 2 months&lt;/a&gt; and finding it difficult to get hired. Raju and his group can go  underground and leave it to the "law of the land"to drag on a few 30 years or so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-8086069414204747332?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/8086069414204747332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2009/01/on-satyam-fiasco.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/8086069414204747332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/8086069414204747332'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2009/01/on-satyam-fiasco.html' title='On the Satyam fiasco'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7224210629871653196</id><published>2008-12-18T04:00:00.000-08:00</published><updated>2009-02-23T01:10:15.663-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bandra'/><category scheme='http://www.blogger.com/atom/ns#' term='srk'/><category scheme='http://www.blogger.com/atom/ns#' term='carter road'/><category scheme='http://www.blogger.com/atom/ns#' term='shah rukh khan'/><category scheme='http://www.blogger.com/atom/ns#' term='bmw'/><title type='text'>Chasing SRK</title><content type='html'>&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Last month my cousins were over from the &lt;?xml:namespace prefix = st1 /&gt;&lt;st1:place st="on"&gt;&lt;st1:country-region st="on"&gt;UK&lt;/st1:country-region&gt;&lt;/st1:place&gt;. So as part of the Mumbai tour, we hung outside Mannat - Shah Rukh Khan's villa at Bandstand- for a dekko. To no avail - all we got was overhearing one security guy telling another that "Saab abhi nikala hai. Dhyaan rakhna".&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;We did however get a peak at his fleet of BMWs from the gate of the complex (the one on the side road which leads up to Mount Mary Church). This led rise to us discussing the newspaper report that SRK's cars are all BMWs numbered 555. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Moving on from Bandstand, we went off for dinner and a drive later along &lt;st1:street st="on"&gt;&lt;st1:address st="on"&gt;Carter Road&lt;/st1:address&gt;&lt;/st1:street&gt; around 11:30 pm. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Suddenly a vehicle zoomed past us - and my cousin quite casually mentioned - "Hey there's a silver BMW ending in 555 - Didnt you say SRK drives in one of those?"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;"Oh is it really him?" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;"Let's follow that car"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;So we revved up behind the car - honking off a rickshaw and everything else that appeared in between. Getting closer - we saw the car led by a Gypsy with blinking lights and 3 security guys. Also the BMW was a 7-series sedan - so good chances that this was SRK's car with him in it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SUs5kdNgGKI/AAAAAAAAACA/T_k3Q_tcRCo/s1600-h/P1010704.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5281378286501370018" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 181px" alt="" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SUs5kdNgGKI/AAAAAAAAACA/T_k3Q_tcRCo/s320/P1010704.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SUs5gKNCmOI/AAAAAAAAAB4/PHaSesNJt1M/s1600-h/P1010703.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5281378212679686370" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 181px" alt="" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SUs5gKNCmOI/AAAAAAAAAB4/PHaSesNJt1M/s320/P1010703.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SUs5YOtcU3I/AAAAAAAAABw/zS0CvBEqCYw/s1600-h/P1010700.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5281378076450378610" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 181px" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SUs5YOtcU3I/AAAAAAAAABw/zS0CvBEqCYw/s320/P1010700.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;We caught up soon enough (or rather they got bogged down in the traffic on Perry Road) and we finally stopped at the red signal - parked parallel to this car. My wife and cousins waved and danced like true mad fans - yelling "Shah Rukh Shah Rukh" - hoping he'll pull down the dark windows and wave back. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Well - the story ends on that disappointing note. After probably observing us for some time (and ensuring we're just crazy fans and not a threat - sure the security recorded my car number as well) the BMW and Gypsy cars cut through the red signal and drove off. We thought of following but noticed the 2 traffic policemen standing just ahead of the signal. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;We drove back home all hugely disappointed - "Arrey Hum Bhi Santrowale hai *" so he could have allowed us a smile or a wave.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;* - SRK is the brand ambassador for Hyundai Santro and the tagline for the earlier ads was Arrey Santrowale hai&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;And were we behind the wrong car?&lt;br /&gt;Luckily a quick Google search on the car number MH 02 AU 555 solved that one. I got the photo below on a blog site.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SUs5qHvpcBI/AAAAAAAAACI/3C6-DZn6W6g/s1600-h/srk.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5281378383818223634" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 320px; CURSOR: pointer; HEIGHT: 229px" alt="" src="http://3.bp.blogspot.com/_ER-q_TZ-wqk/SUs5qHvpcBI/AAAAAAAAACI/3C6-DZn6W6g/s320/srk.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7224210629871653196?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7224210629871653196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2008/12/chasing-srk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7224210629871653196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7224210629871653196'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2008/12/chasing-srk.html' title='Chasing SRK'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ER-q_TZ-wqk/SUs5kdNgGKI/AAAAAAAAACA/T_k3Q_tcRCo/s72-c/P1010704.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-172764692590951148</id><published>2008-12-16T13:52:00.000-08:00</published><updated>2008-12-16T19:28:30.668-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test match'/><category scheme='http://www.blogger.com/atom/ns#' term='cricket'/><category scheme='http://www.blogger.com/atom/ns#' term='sachin tendulkar'/><title type='text'>The Sachin Effect - Ind v England Chennai 2008</title><content type='html'>The day after Sachin Tendulkar did it. Helped India chase down 387 and hit a boundary on 99 to make a century as well as the winning runs.&lt;br /&gt;&lt;br /&gt;As the last 4 was hit, Anil - my Code Red* partner-in-crime instantly messaged me - "Abhi 2 action point jyaada mila to bhi chalega"&lt;br /&gt;&lt;br /&gt;Yes - that's the effect Sachin has on us. The feel-good factor when he plays well and India wins.&lt;br /&gt;What's happened for Indian cricket on Dec 15th 2008 is the sort of thing you feel you'll never get to watch ever. SRT batting a fourth innings century and India winning the game.&lt;br /&gt;Come on - break Lara's 400* too before you retire !&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Congrats also to Yuvraj who stopped hitting the boundaries at 80* and leaving enough runs for SRT to get to his hundred.&lt;/li&gt;&lt;li&gt;Thanks to Monty Panesar and Swann for not bowling 4 wides to finish the match - and actually leaving 4 runs for India to bat at the end.&lt;/li&gt;&lt;li&gt;Congrats to the people(match referee?) who selected Sehwag for the deserved Man-of-the-Match and didnt get senti enough to give it to Sachin&lt;/li&gt;&lt;li&gt;The emotional scenes when all the ground staff swamped SRT after the game ended. Truly touching.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Poignant that Sachin dedicated his innings to Mumbai - as his RBS ad affirms "I play for India now more than ever"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;And finally this classic comment on the BBC forum during the chase&lt;br /&gt;"my beloved England are heading for another disappointing flat ending. We couldn't kill off a half dead runover cat with a placard in it's hand saying "do us a favour mate and kill me off"..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(*Note - My current project is in a spot of bother, hence Code Red)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-172764692590951148?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/172764692590951148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2008/12/sachin-effect-ind-v-england-chennai.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/172764692590951148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/172764692590951148'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2008/12/sachin-effect-ind-v-england-chennai.html' title='The Sachin Effect - Ind v England Chennai 2008'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-9137911441075338839</id><published>2008-11-25T02:22:00.000-08:00</published><updated>2009-08-05T23:03:29.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='core dump'/><category scheme='http://www.blogger.com/atom/ns#' term='global local zones'/><category scheme='http://www.blogger.com/atom/ns#' term='JDK'/><category scheme='http://www.blogger.com/atom/ns#' term='stuck thread'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM crash'/><category scheme='http://www.blogger.com/atom/ns#' term='application support'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Simultaneous Solaris T2000 core dumps on local zones</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Issue: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our applications run on Sun T2000 servers which are configured with 4 or 5 Local zones on each Global Zone.&lt;br /&gt;&lt;br /&gt;17th November 05:00 there was an issue on one Global Zone which caused 5 separate and simultaneous core dumps to get created on the server. One core in each Local zone.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Impact: &lt;/span&gt;&lt;br /&gt;The 5 processes which crashed on each Local zone were&lt;br /&gt;&lt;br /&gt;LZ 15 – core created by the wlshell java process. Low impact&lt;br /&gt;LZ 27 – one core created by wlshell java processes. Low impact.&lt;br /&gt;LZ 25 – core created by HM server java process. Was manually restarted today. Medium impact&lt;br /&gt;LZ 26 – core created by PA server java process. This was automatically restarted by the HM. High impact.&lt;br /&gt;LZ 37 – core created by HM server java process. Was manually restarted today. Medium impact&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All 5 crashes above were in Library=/platform/sun4v/lib/libc_psr.so.1&lt;br /&gt;&lt;br /&gt;Each core exits with a hs_err_&lt;pid&gt;&lt;pid&gt;.log file - which contains the foll details&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;An unexpected exception has been detected in native code outside the VM.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Unexpected Signal : 10 occurred at PC=0xFF2709F0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Function=_memset+0x70&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Library=/platform/sun4v/lib/libc_psr.so.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Current Java thread:&lt;br /&gt;at java.lang.Thread.start(Native Method)&lt;br /&gt;- locked &lt;0xf1f3a378&gt; (a java.util.logging.LogManager$Cleaner)&lt;br /&gt;at java.lang.Shutdown.runHooks(Shutdown.java:126)&lt;br /&gt;at java.lang.Shutdown.sequence(Shutdown.java:165)&lt;br /&gt;at java.lang.Shutdown.exit(Shutdown.java:210)&lt;br /&gt;- locked &lt;0xf5998498&gt; (a java.lang.Class)&lt;br /&gt;at java.lang.Runtime.exit(Runtime.java:90)&lt;br /&gt;at java.lang.System.exit(System.java:715)&lt;br /&gt;at ConsoleScriptRunner.main(ConsoleScriptRunner.java:64)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Investigations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Seems to be running out of swap at the time of the crash. Memory: 31.9G real, 4.0G free, 37.7G swap in use, &lt;span style="font-weight: bold;"&gt;2.4G swap free&lt;/span&gt;&lt;br /&gt;Update: added 50 G swap on 19/11 - Memory: 31.9G real, 3.4G free, 38.0G swap in use, &lt;span style="font-weight: bold;"&gt;52.8G swap free&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Application Support is identifying what the wlshell process does – it seems to be a Weblogic server monitoring script running every 10 minutes under cron.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Library=/platform/sun4v/lib/libc_psr.so.1 Are there any known issues with this library on solaris 10 or T2000? Support to query SUN&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The libc_psr libraries implement platform-specific, optimized versions of block copy and move routines from libc, such as memcpy(). On UltraSPARC machines, these routines are coded in assembler, and use block load and store ASI's, prefetch, and other tricks for better performance.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Root Cause &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sun identified that the issue was related to known bugs in JDK 142_03 and running an old version of libc_psr.so&lt;br /&gt;&lt;br /&gt;The ( a) type error as seen in hs_err_pid6216_18111030.log the error was a know java bug with the j2sdk1.4.2_03 and the bug is identified as :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Bug ID: 4927116 fixed in 1.4.2_04 Synopsis Regression: 1.4.2 JVM core dumps in ClassLoader.defineClass0() &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actions &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Immediate action is to upgrade to JDK 142_18&lt;br /&gt;&lt;br /&gt;2. Also identified that all 5 core dumps were created by sh scripts running under crontab. Further analysis showed that there were cron jobs running every 15 mins on each of the zones - and this puts a load on system resources especially around memory consumption in the JVM and sufficient unhanded exceptions between the java virtual machine and the operating system could cause the then dead locked JVM to terminate .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thus the 2nd resolution was to offset the start time of each cron job - to try and ensure no two jobs run on the same Global Zone at the same time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Old Timings:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;0,15,30,45 * * * * /export/home/Handlers.sh &gt; /tmp/Handcheck&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0,15,30,45 * * * * /export/home/Average_response_time.sh &gt; /tmp/Avgcheck&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0,15,30,45 * * * * /export/home/Msg_In_and_Out_count.sh &gt; /tmp/Mescheck&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * /log/zipper.sh &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;New Timings:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;1,16,31,46 * * * * /export/home/Handlers.sh &gt; /tmp/Handcheck&lt;br /&gt;2,17,32,47 * * * * /export/home/Average_response_time.sh &gt; /tmp/Avgcheck&lt;br /&gt;3,18,33,48 * * * * /export/home/Msg_In_and_Out_count.sh &gt; /tmp/Mescheck&lt;br /&gt;4 0,2,4,6,8,10,12,14,16,18,20,22 * * * /log/zipper.sh &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also knocking off unnecessary cron jobs from the box to reduce the load.&lt;br /&gt;&lt;br /&gt;&lt;/pid&gt;&lt;/pid&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-9137911441075338839?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/9137911441075338839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2008/11/solaris-t2000-core-dumps-on-local-zones.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/9137911441075338839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/9137911441075338839'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2008/11/solaris-t2000-core-dumps-on-local-zones.html' title='Simultaneous Solaris T2000 core dumps on local zones'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-2839711890541072750</id><published>2008-10-22T02:30:00.000-07:00</published><updated>2009-08-05T05:20:10.702-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shirdi'/><title type='text'>Car journey to Shirdi</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;br /&gt;We travelled to Shirdi last weekend - took my own car along for a good self-driven road trip.&lt;br /&gt;&lt;br /&gt;The road is quite straightforward - from Mumbai take the Eastern Express Highway to Thane and Bhiwandi. This is the NH3 to Nashik, but we took a route avoiding Nashik. Left from home at 7:30 am.&lt;br /&gt;First stop was for snacks at Manas Resorts Igatpuri at around 10:30 am. The resort has been nicely done-up and looks a good spot for a weekend getaway a la Fariyas.&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SP8gNVgTmVI/AAAAAAAAAAU/DR301xauP-o/s1600-h/DSC02299.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259958303275063634" alt="" src="http://2.bp.blogspot.com/_ER-q_TZ-wqk/SP8gNVgTmVI/AAAAAAAAAAU/DR301xauP-o/s320/DSC02299.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;7 km after Igatpuri is the town of Ghoti which has a bypass road to Sinnar, which avoids Nashik completely. There is a board on the highway pointing to a right turn to Ghoti. The off-road leads through a market for about 2 kms, but ask for directions to Sinnar/Shirdi if confused. It leads to a railway crossing and a toll booth later - and then the bypass road smoothens out.&lt;br /&gt;This route was a scenic drive through some unspoiled lands. The photos show the windmills and lakes seen along the Ghoti-Sinnar bypass road. Another advantage was no high-speed overtakers on this route, since the road is well-hidden. There are no boards informing you of this route, and you get 60 kms of peaceful leisurely driving.&lt;br /&gt;&lt;br /&gt;At Sinnar, you rejoin the SH10 which is a straight road to Shirdi. Back to the superfast buses and crazy drivers. We reached Shirdi at 2:15 pm and quickly found a hotel for ourselves. &lt;br /&gt;The Hotel Sai Baba International - which is right opposite the main gate of the temple complex. The rooms were adequate, 3 star hotel with clean facilities. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SP8gpCRKoeI/AAAAAAAAAAk/DIbaN_x2yys/s1600-h/windmills.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259958779147624930" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SP8gpCRKoeI/AAAAAAAAAAk/DIbaN_x2yys/s320/windmills.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SP8gTZkpTtI/AAAAAAAAAAc/EvOPa5HjoiM/s1600-h/windmills.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Road distances:&lt;br /&gt;Andheri East - 0 Km&lt;br /&gt;Ghatkopar on EEH - 13 Km&lt;br /&gt;Shahapur - 74 Km&lt;br /&gt;Igatpuri - 124 Km&lt;br /&gt;Ghoti - 131 Km&lt;br /&gt;Sinnar - 190 Km&lt;br /&gt;Shirdi - 250 Km&lt;br /&gt;&lt;br /&gt;The journey took 7 hours on the way out, but we spent 1.5 hours in breaks.&lt;br /&gt;The return was quicker since we knew the route well, 6 hours in all including lunch at Foodplaza beyond Igatpuri (Avoidable!) . &lt;br /&gt; &lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-2839711890541072750?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/2839711890541072750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2008/10/car-journey-to-shirdi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2839711890541072750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/2839711890541072750'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2008/10/car-journey-to-shirdi.html' title='Car journey to Shirdi'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ER-q_TZ-wqk/SP8gNVgTmVI/AAAAAAAAAAU/DR301xauP-o/s72-c/DSC02299.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2805163882887351730.post-7271049440474029886</id><published>2008-10-14T23:54:00.000-07:00</published><updated>2009-02-23T01:08:08.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kerala'/><category scheme='http://www.blogger.com/atom/ns#' term='alphonsa'/><category scheme='http://www.blogger.com/atom/ns#' term='catholic'/><title type='text'>St Alphonsa canonized</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SPWUERL_BsI/AAAAAAAAAAM/z4IsechxDOo/s1600-h/Alphonsastamp.jpg"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5257270941078980290" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_ER-q_TZ-wqk/SPWUERL_BsI/AAAAAAAAAAM/z4IsechxDOo/s320/Alphonsastamp.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family:georgia;"&gt;There's been lots of news recently over Sr. Alphonsa - a Catholic nun from Bharananganam, in Kottayam district, Kerala being proclaimed a Saint on Oct 12th 2008. She will now be known as St Alphonsa of the Immaculate Conception. This is newsworthy since she is the second saint from India and the first woman.&lt;br /&gt;Many would have expected Mother Teresa to be the first woman from India - but things dont move so fast in the Vatican - St Alphonsa has been canonized 62 years after her death.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was watching the news on Sunday - CNNIBN I think it was - an over-excited reporter outside Mahim church had found a Kerala-ite lady who "had actually been to the church of St Alphonsa" and was asked in true AajTak style - "How do you feel about it?" "Kaise mehsoos ho raha hai"types.&lt;br /&gt;&lt;br /&gt;As over-the-top as that was - it truly hit me then how proud a moment it was for people like myself and my family - those who have a small (and I mean really small) association with this saint, the town and the church. Bharananganam is a town 4 kms away from my mom's native place of Edamattom in Kottayam district, Kerala. My mom has in fact studied in the same convent school attached to this church - and when she was a student, there was the buzz around the church and convent - that of Sr Alphonsa - the recently passed away nun who led a simple and pious life. She was a model for all other girls to follow and this was part of the school's christian studies too.&lt;br /&gt;&lt;br /&gt;Sr Alphonsa was beatified by Pope John Paul II on his India visit in 1986. [Beatification is the penultimate step in the process of sainthood]. This led to the mass following there is now - the hope that she will be declared a saint one day - and that she will intercede and miracles can happen. Throughout my childhood, we used to regularly visit the church on each visit to Kerala. This has continued till today - and is one of the things we do without fail.&lt;br /&gt;&lt;br /&gt;I think the difference now that she has become a Saint - means Christians from all over India and even abroad will now make this a pilgrimage place. Similar to St Francis Xaviers church in Goa and Vailankanni in Tamil Nadu. So the roads have been widened, the town painted. On my last visit, the church had been restored and the gardens had been replanted completely. The church becomes a pilgrimage centre and the town prospers too. Since this is in Kottayam, a visit to the church might soon be added on tour itineraries along with the Kumarakom lake and houseboat rides.&lt;br /&gt;I do hope things remain as they were - small and simple. Not turning into the commercial circus most religious places become.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well time will tell. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2805163882887351730-7271049440474029886?l=jojovedder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jojovedder.blogspot.com/feeds/7271049440474029886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://jojovedder.blogspot.com/2008/10/st-alphonsa-canonized.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7271049440474029886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2805163882887351730/posts/default/7271049440474029886'/><link rel='alternate' type='text/html' href='http://jojovedder.blogspot.com/2008/10/st-alphonsa-canonized.html' title='St Alphonsa canonized'/><author><name>Jose Kuzhivelil</name><uri>http://www.blogger.com/profile/17838009305405360501</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ER-q_TZ-wqk/SPWUERL_BsI/AAAAAAAAAAM/z4IsechxDOo/s72-c/Alphonsastamp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
