Tuesday, December 29, 2009

StuckThread Exception

In Application server, mangaged/unmanaged threads can run continuously without interrupting/sleep/wait for a given/sliced time. If the thread exceeds the maximum time configured for StuckThreadMaxTime.

Server keeps the track of when the thread started and how long continuously running, once the thread exceeds time immediatly the respective thread state will changed to STUCK and incident error will be thrown. However, thread will be kept running. Hence, we can consider this as benign error message.

Administrator can take call on based on how many times, this issue comes in a day, and what is the sevearity of this issue giving thread.

Each application server has the provision to configure the max time. We may have a question, why this limitation is required for Server? , this limitation needed for security reasons. Assume that, we have deployed a web application where HTTP call made by crackers/hackers to stop responding application for intented customer by keeping server always busy. Server helps us by notifying server panic state by throwing this error message.

In weblogic, default value for stuckThread Max Time would be 600s.

Environment > servers > soa_server > Configuration > Tuning > change Stuck Thread Max Time

This value has to be changed only when we get stuck thread exception and increasing this number may degrade performance. Maximum 1200s would be the recommended value for weblogic server.


<Apr 3, 2009 4:30:26 PM PDT> <Error> <WebLogicServer> <BEA-000337> <[STUCK] 
ExecuteThread: '1' for queue: 'weblogic.ker 
nel.Default (self-tuning)' has been busy for "1,301" seconds working on the 
request "org.bank.BankUtilityBean_fq50_EOImpl", which is more than the 
configured time (StuckThreadMaxTime) of "1,200" seconds. Stack trace: 
java.net.SocketInputStream.socketRead0(Native Method) 
java.net.SocketInputStream.read(SocketInputStream.java:129) 
oracle.net.ns.Packet.receive(Packet.java:240) 
oracle.net.ns.DataPacket.receive(DataPacket.java:92) 
oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:172) 
oracle.net.ns.NetInputStream.read(NetInputStream.java:117) 
oracle.net.ns.NetInputStream.read(NetInputStream.java:92) 
oracle.net.ns.NetInputStream.read(NetInputStream.java:77) 
oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1034) 
oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1010) 
oracle.jdbc.driver.T4C8TTILob.receiveReply(T4C8TTILob.java:847) 
oracle.jdbc.driver.T4C8TTILob.write(T4C8TTILob.java:243) 
oracle.jdbc.driver.T4CConnection.putBytes(T4CConnection.java:2078) 
oracle.sql.BLOB.setBytes(BLOB.java:698) 

No comments:

Post a Comment

Recent Posts

Unix Commands | List all My Posts

Texts

This blog intended to share the knowledge and contribute to JAVA Community such a way that by providing samples and pointing right documents/webpages. We try to give our knowledege level best and no guarantee can be claimed on truth. Copyright and Terms of Policy refer blogspot.com