Reclaiming stuck execute threads
Does anyone out there know of a setting in WLS 7 where you can tell it to reclaim
an execute thread that has been stuck for a while? There are settings to detect
stuck threads, but I would like it to reclaim (kill stuck one and create a new
one and add back to execute queue) that stuck thread after a set amount of time.
Will it already do this on its own; am I just not waiting long enough?
Hi Chris,
"Chris" <[email protected]> wrote in message
news:3eb143e6$[email protected]..
Does anyone out there know of a setting in WLS 7 where you can tell it toreclaim
an execute thread that has been stuck for a while? There are settings todetect
stuck threads, but I would like it to reclaim (kill stuck one and create anew
one and add back to execute queue) that stuck thread after a set amount oftime.
In Java there is no way to "kill" a stuck thread, and there is a good
reason for this.
The feature you are taking about is for diadnistic purposes
and should be used as such.
Will it already do this on its own; am I just not waiting long enough?If it's really stuck, you have to get a thread dump and find out
why thread stuck. You can get a thread dump by pressing
<Ctrl+Break> in Widows shell or sending kill -3 to the server
process under Unix.
Regards,
Slava Imeshev
Similar Messages
-
Clearing a Stuck Execute Thread
HI.
If you get a stuck execute thread, is there anyway of clearing it or rolling it back so the action (a POST in this case) can be repeated again?
STUCK] ExecuteThread: '16' for queue: 'weblogic.kernel.Default (self-tuning)'
684959
[email protected][ POST /ols/uds/request HTTP/1.0 Accept: image/gif, image/x-xbitmap,
image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap,
application/x-ms-application, */* Referer: https://www.workcoverqld.com.au/ols/uds/file Accept-Language: en-au
Content-Type: application/x-www-form-urlencoded UA-CPU: x86 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT
5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Content-Length: 260 Pragma:
no-cache Cookie: JSESSIONID=Tsh3LLqRZrn0pYf4hdyrBbtLTxWf2sVg2Q8LBLgYpvrTThy9LYlJ!1280830650 X-Forwarded-For:
202.158.241.132 Connection: Keep-Alive Proxy-Client-IP: 202.158.241.132 X-WebLogic-KeepAliveSecs: 25
X-WebLogic-Request-ClusterInfo: true x-weblogic-cluster-hash: eu0SzdBVUqV5a6fkg3X2d1IDltA ]Hi,
We can get more info about execute threads by getting thread dumps. Below are few ways to get
1. From weblogic admin console. Servers --> Monitoring --> Performance --> Dump Thread.
2. On the unix box enter the command "kill -3 <pid>".
3. Using WLST
java weblogic.WLST
>connect('<adminUsername>','<adminPassword>','<t3://adminServerUrl:port>')
>threadDump('true','VASLog.txt','<ServerName>')
>exit()
4. Using welogic.Admin command tool
java weblogic.Admin -adminurl t3://<adminServer>:<port> -username <adminUsername> -password <adminPassword> THREAD_DUMP
Except for point 3, all the output is written to "<ManagedServerLog>.out" file.
Thanks.
Vijay Bheemineni. -
Is there a way to kill specific Execute Threads. We are in a situation when an
MDB would not acknowledge specific messages and those MDBs(which run on default
execute queue) will not terminate. We would like to kill those threads when we
want to undeploy the app. IF there are MDBs running on other threads, then the
app would not end gracefully. See post
http://newsgroups.bea.com/cgi-bin/dnewsweb?utag=&group=weblogic.developer.interest.jms&xrelated=10750&cmd_thread_next.x=45&cmd_thread_next.y=11
So the question: Is there a way to kill specific execute threads thru JMX or some
other way?
Thanks
RajWhat do you mean by "executes a script"? Is this execing a shell or is it just running some Java code?
You can't kill a Thread if it doesn't want to be killed. The deprecated Thread.stop method will atempt to cause an asynchronous ThreadDeath exception in the thread but this is very dangerous as it can leave shared objects - including system library objects - in an unstable and unusable state.
The preferred mechanism is cooperative termination whereby you use the Thread.interrupt method to indicate to the target thread that it should cease what it is doing, when it is safe to do so. The target thread must be responsive to interrupt requests either by directly checking Thread.interrupted, or by using methods that are themselves responsive to interrupts (typically blocking methods that will throw InterruptedException if interrupted). Some blocking methods (mainly IO operations) won't respond to interrupt, nor does the acquisition of a monitor lock, so there are never any guarantees. If the thread can stuck in an "endless loop" then something in that loop needs to check for interrupts. -
can any one tell me what is the diff between the execute thread total count and active thread and execute idle thread count in wblogic
Thanks
GopiHi,
Please let us know if anything specific you wanted to know...
ExecuteThreadIdleCount
The number of idle threads in the pool. This count does not include standby threads and stuck threads. The count indicates threads that are ready to pick up new work when it arrives.
ExecuteThreadTotalCount
The total number of threads in the pool.
ActiveThreadCount
An array of the threads currently processing work in the active thread pool.
Thanks
Jay SenSharma
Edited by: Jay SenSharma on Jan 26, 2010 10:16 PM -
Alternative to WebLogic 8.1 Execute thread Qs in Websphere 6.1
Hi All,
We are in the process of migrating from WebLogic 8.1 to WAS 6.1. We have few application in WebLogic that use custom execute threads so that trafic is moved to user defined thread instead of default thread pool. This is done in weblogic using dispatch-policy tag under weblogic.xml.
I appreciate if someone could help me understand the alternative of doing same thing in WebSphere 6.1.
I was going thru some site searching and came across Work Manager that does the same thing which is new to me but does similar job.
Thanks in advanceHi All,
We are in the process of migrating from WebLogic 8.1 to WAS 6.1. We have few application in WebLogic that use custom execute threads so that trafic is moved to user defined thread instead of default thread pool. This is done in weblogic using dispatch-policy tag under weblogic.xml.
I appreciate if someone could help me understand the alternative of doing same thing in WebSphere 6.1.
I was going thru some site searching and came across Work Manager that does the same thing which is new to me but does similar job.
Thanks in advance -
How do you modify the default Execute thread count in Weblogic Server 9.2?
How do you modify the default Execute thread count in Weblogic Server 9.2?
How can you tune the starting number of weblogic.ExecuteThread on server startup and/or set minimum number?
Is there an option from the console?
Please let me know.
ThanksSelf tuning will automatically manage the threads but however you can still control the min and max by adding the min and max values for each instance either directly adding in config.xml or through JVM settings
1) Modifying the config.xml
Just add the following line(s) to each server definition :
<server>
<name>AdminServer</name>
<self-tuning-thread-pool-size-min>100</self-tuning-thread-pool-size-min>
<self-tuning-thread-pool-size-max>200</self-tuning-thread-pool-size-max>
</server>
2) Adding some JVM parameters
It's safer the following way :
add the following option in your command line : -Dweblogic.threadpool.MinPoolSize=100
Regards
RR -
Identifying Execute Threads as Socket Readers
Hi All,
Preface: I am trying to identify at any given instance the percentage of
socket reader threads that are in use - this will help me to identify when
all threads are in use and unable to service user requests. Thus my goal is
to identify threads that are socket readers and whether they are active or
idle.
Through JMX I can obtain an instance of each
weblogic.management.runtime.ExecuteThread, which lists the same information
that you see in the console if you drill down to the thread level, for
example:
mydomain> Servers> myserver> Active Execute Queues> default> Execute Threads
That information includes:
- thread number
- total requests
- last request
- current request
- transaction
- user
- is the thread idle?
Now my question is from this information can you identify which of these
threads are being used as socket readers?
Here are some excerpts from my JMX calls:
Name: ExecuteThread: '0' for queue: 'default'
Execute Queue Runtime Name: default
Current Request: null
Last Request: Http Request: /bookstore/en/authors/showauthors.jsp
User: null
Is Idle?: true
Name: ExecuteThread: '15' for queue: 'default'
Execute Queue Runtime Name:default
Current Request: null
Last Request: Scheduled Trigger
User: null
Is Idle?: true
Name: ExecuteThread: '26' for queue: 'default'
Execute Queue Runtime Name:default
Current Request: null
Last Request: ListenRequest for a new connection on: 'Socket
addr=127.0.0.1,port=2061,localport=7001]'
User: null
Is Idle?: true
Name: ExecuteThread: '59' for queue: 'default'
Execute Queue Runtime Name:default
Current Request: Socket Reader Request
Last Request:
we[email protected]
User: null
Is Idle?: false
It would appear that the "ListenRequest" last request would identify a
socket reader, only I have 60 threads in my default execute queue with 70%
dedicated to socket readers and the number of threads that say their last
request was "ListenRequest ..." is only 5.. Furthermore there is only one
"Socket Reader Request" identified thread.
Are threads identified as socket readers permanently or constantly reused
for whatever purpose is required (with a cap of use based off of the socket
reader perspective)?
Thanks in advance for your help!
SteveHi Achhi,
Socket Reader Threads are the Threads which are responsible for reading the incoming request data. We can divide the Socket reader threads in two categories:
Pure Java Socket Reqders: The pure-Java socket reader implementation, where the socket reader threads continually poll all opened sockets to determine whether they contain data to be read, even if the sockets have no data to read. (From Performance Point This is Not Good that the Sockets will be in Opened Mode even if there is no Data to read)
Native Socket Readers: (These are the Dafault Socket Readers) The native IP socket reader provided by the host machine's operating system, where the socket reader threads target only active sockets that contain data to be read. Native socket readers never poll sockets because they are immediately notified when a socket needs to be serviced. For Better Performance You should always prefer using Native Socket Readers.
To Enable Native Socket Readers You can Login to AdminConsole--->Servers ---><SERVER_NAME>--->configuration (Tab)--->Tuning (SubTab)---> "Enable Native IO" (This checkbox must be checked)
Still If you want to use the Java Socket Readers .... still you can improve the performance of socket communication by configuring the proper number of socket reader threads for each server instance. For best performance, the number of socket reader threads in WebLogic Server should equal the potential maximum number of opened sockets.
Thanks
Jay SenSharma
http://weblogic-wonders.com/weblogic (WebLogic Wonders Are here) -
Max no of execute threads in 4.5
Hi,
We have set the no of execute threads in 4.5.1 to >700. During start up of
the weblogic server, we get the following message:
!!!!!!!!!!!!!!!!!!!!!Property
weblogic.system.executeThreadCount has value: 775 > max: 400 setting value
to 400
Does WebLogic not allow the no of execute threads to be more than 400?
Thanks
GauravThanks for that info. That was very helpful.
Gaurav
Wei Guan <[email protected]> wrote in message
news:[email protected]...
400 is a hard-coded upper limit. There is no way you can change it.
From my understanding, ExecuteThreads => UserConnections + ConnPoolSize isa
confusing "rules of thumb".
Number of threads depends on the average request processing time, average
waiting time that your users can accept and average concurrent users. For
Internet application, nobody wants to wait, so, we can assume average
waiting time equals average processing time (this is the mininum waiting
time).
In order to find out how many threads you need, first find out the average
reqeust processing time of your systems. Secondly, find out how many
concurrent users you will have, in your case, it is 100. Keep in mind not
all users send requests to WLAS at the same time. There is a ratio ofnumber
of concurrent users to number of concurrent requests within the average
request processing time. Statistically, the higher the number ofconcurrent
users, the higher this ratio. Normally, this ratio can range from 1 to 20
(Sorry, I do not have any research paper, however, this is a typicalrandom
processing problem). If you have a very powerful machines and the average
processing time is very low, this ratio can be even higher (for example,
your average processing time is 1/2 seconds, and user waiting time is 2
seconds). Threads likes employees in MacDonnald. The number of customersin
MacDonnald likes concurrent users. Customers who actually waiting to be
served is like current requests. If the number of employees equals the
number of customers in MacDonnald, you will see MacDonnald stocks willlike
trash within couple of days. If the number of employees equals the numberof
customers waiting to be served, you will see the stocks will be trashwithin
couple weeks.
Since 100 is a medium size number, let's take 4 as the ratio, 100/4 = 25.
So,
there might be 25 concurrent requests within your average requestprocessing
time. How many threads you need to process 25 concurrent requests? 25!
Start with 25 and monitor weblogic server. If CPU utilization is low andthe
number of requests in WLAS request queue is low, decrease this number. If
CPU utilization is very high and the number of requests in WLAS requests
queue is high, increase this number. Tuning WLAS needs patience and
carefulness.
The default of threads is 15. Normally, WebLogic suggested use 15 to 60
threads.
Large number of threads will not buy you anything. It simply creates lotsof
idle threads and wastes systems resources to do context switching. Those
threads like extra employees in MacDonnald. MacDonnald has to pay them$$$.
One of reason why private companies are more efficient and profitable than
government is that private companies try their best to increase that
"ratio".
I guess, "400" by WebLogic is a way that WebLogic prevents your fromrunning
your WebLogic Server likes a state-owned enterprise where employees can
enjoy coffees at their office most of the time. I guessed :-).
You just have 100 users, where 600 connections are coming from???
My 2 cents.
Cheers - Wei
Gaurav Khanna <[email protected]> wrote in message
news:[email protected]...
Yep,
We have a 4 processor machine and 600 connections and 100 concurrentusers.
BTW, is 400 the upper limit and is that specified by WebLogic or the OS?
Thanks
Gaurav
Srikant Subramaniam <[email protected]> wrote in message
news:[email protected]...
Yes, there is an upper limit (as you discovered)! Any reason why you
would
want to have 700 executeThreads?
Srikant.
Gaurav Khanna wrote:
Hi,
We have set the no of execute threads in 4.5.1 to >700. During start
up
of
the weblogic server, we get the following message:
!!!!!!!!!!!!!!!!!!!!!Property
weblogic.system.executeThreadCount has value: 775 > max: 400 settingvalue
to 400
Does WebLogic not allow the no of execute threads to be more than
400?
>>>>
Thanks
Gaurav -
Query Regarding Execute Thread Count
Hi,
My understanding of Execute Thread Count is the threads which are assigned to service
requests coming to Weblogic Server.
In our current architecture a request for generating report is directed to EJB method
which makes a call to another Server (Report Server for executing reports), the report
Server in turn calls the EJB residing on Weblogic Server for getting the data.
So, is my assumption correct that with our current architecture we are limited to
concurrency of Execute Thread Count -1. (Every request for report will consume 2
Excute threads, and others will have to wait till the first request gets completed
and 2 threads are freed).
I also read from the postings that Weblogic takes some of the threads, so it actually
will be limited to (Execute thread count - Weblogic Held- 1).
Please corect me if I am wrong.
Thanks and Regards
RashmiHi,
Thanks very much for the suggestion. I tried, and it is using 2 Execute Threads.
Thanks
Rashmi
"Dave Martin" <[email protected]> wrote:
>
Rashmi:
If you are interested in answering the question rigorously, why not just
throw a
fake exception along both the report generation path and the runReport method
of
the ReportServer, then record their stack traces to a file for comparison?
From the sounds of it, your app wants to make the actual report generation
asynchronous
from the post of the reporting request. If they're really asynchronous,
then your
ReportServer must have some kind of blocking queue that will "wake up" when
it has
work to be done. Depending on how you implemented this, your runReport
method may
not be running a WebLogic execute thread at all.
Seems to me that you should be thinking of this as consuming one execute
thread regardless.
Even if the two pieces of work are asynchronous, the first thread finished
its work
at the point that it posts to the second thread (at least, per your description).
So at any one time, at max one execute thread is being consumed per request.
But capture the stack traces and have a look for yourself.
Dave Martin
"Rashmi S" <[email protected]> wrote:
Hi,
Thanks for your reply.The reason why I say 2 threads will be consumed is
as follows
1. First execute thread will be used for the request to Weblogic Server
to run the
report originating from a client.
2. Now, within the ReportServices EJB there is a call to Report Serverto
run the
report. The running of report is done on the Report Server which is ona
separate
m/c. Within the runReport method of the Report Server ,the data is fetched
for the
report by making a context look-up of another session EJB which fetches
the data.
So, the second Execute thread will be consumed for executing the EJB that
fetches
the data.
Am I correct?
Thanks and Regards
Rashmi
"Cameron Purdy" <[email protected]> wrote:
Incoming requests (from outside the server) use one thread for the duration
of their processing. Previous to their processing they are queued until
a
thread is available. So you would use one thead per concurrent request,
not
two. Otherwise, it sounds right.
Peace,
Cameron Purdy
Tangosol, Inc.
Clustering Weblogic? You're either using Coherence, or you should be!
Download a Tangosol Coherence eval today at http://www.tangosol.com/
"Rashmi S" <[email protected]> wrote in message
news:[email protected]...
Hi,
My understanding of Execute Thread Count is the threads which are assignedto service
requests coming to Weblogic Server.
In our current architecture a request for generating report is directedto EJB method
which makes a call to another Server (Report Server for executingreports), the report
Server in turn calls the EJB residing on Weblogic Server for getting
the
data.
So, is my assumption correct that with our current architecture we arelimited to
concurrency of Execute Thread Count -1. (Every request for report willconsume 2
Excute threads, and others will have to wait till the first request
gets
completed
and 2 threads are freed).
I also read from the postings that Weblogic takes some of the threads,so
it actually
will be limited to (Execute thread count - Weblogic Held- 1).
Please corect me if I am wrong.
Thanks and Regards
Rashmi -
Log of execute thread pool status
hi guys
We are performing some performance analysis on a application and would
like to log the status of the execute thread pool periodically to a
log file.
The performance tests run for a extended period of time and hence
console is not proving to be effective in monitoring the behaviour
over a long period of time.
What other alternatives exist if I want to do this.
Thanks for your time
anandthanks guys,
I found an answer in one of rob wollens old post.
http://dev2dev.bea.com/resourcelibrary/utilitiestools/index.jsp
Sorry for posting without doing a little research
~anand -
Configuring Execute Thread Count
Hi,
I am working on a webapp thats using Weblogic 8.1 (SP2) as the application server.
The admin server for Weblogic currently provides 2 execute threads as default.
However I was wondering if I can configure the admin server for a higher number
of execute threads.
I have the following questions:
1.> Does configuring the number of threads for the admin sever provide any additional
value? has any one come across a big application where more than 2 execute threads
are required for the admin server?
2.> If yes, is it possible to configure the number of execute threads for the
admin server? I did some search on the bea website and didnt find anything that
explicitly says that the property is configurable. Is this true?
3.> If it is configurable, then how do we go about setting it up?
If anyone has worked around this and can provide me with any information or references,
that would be great.
ThanksSriram,
Take a look at the following URL for setting the thread count in WLS 6.1
http://edocs.bea.com/wls/docs61/perform/WLSTuning.html#1112343
Chuck Nelson
Developer Relations Engineer
BEA Technical Support
-
Why are the weblogic.kernel.Default Execute Threads used by WLS Kernel
In my Admin Console, it's displaying 10 out of the 15 weblogic.kernel.Default Execute Threads are used by the WLS Kernel user. The total requests column for these threads are showing 0. The other 5 threads are showing 20K to 40K requests. Why is the WLS Kernel users hogging these threads and not allowing the applications to use them?
Hi,
As work enters a WebLogic Server, it is placed in an execute queue. This work is then assigned to a thread within the queue that performs the work.
By default, a new server instance is configured with a default execute queue, weblogic.kernel.default, that contains 15 threads.
Go through the following link and find the usefull information on this issue.
http://e-docs.bea.com/wls/docs81/ConsoleHelp/domain_executequeuetable.html
Regards
Anilkumar kari -
Is there a limit to the number of execute threads in the Weblogic Server
5.x.
(4.5.x had a limit of 400).
Thanks
-RamaThat limit still stands ...
Srikant.
Rama Penumarti wrote:
Is there a limit to the number of execute threads in the Weblogic Server
5.x.
(4.5.x had a limit of 400).
Thanks
-Rama -
Execute threads used by connection pools
Hellos,
I am interested in fining out the relationship betwen the sizes of the execute
thread pool and a connection pool (jolt in my case).
I would like to know if each jolt conection uses up a thead from the default execute
queu or if the threads are taken from a different and reserved thread pool.
I am trying to tune up the thread pool size according to my pool sizes and so
on.
Any ideas?
Best regards,
CristinaCristina Ceballos wrote:
Hellos,
I am interested in fining out the relationship betwen the sizes of the execute
thread pool and a connection pool (jolt in my case).
I would like to know if each jolt conection uses up a thead from the default execute
queu or if the threads are taken from a different and reserved thread pool.
I am trying to tune up the thread pool size according to my pool sizes and so
on.
Any ideas?Hi. Connection pools do not use threads. Your application thread will get a connection
from the pool and use it. The relationship between threads and pools is that you want
to have enough connections in your pool to be able to serve all the threads that
may individually want a connection. Therefore for a server with 25 execute-threads,
you would typically define the pool to have 25 connections.
Joe
>
Best regards,
Cristina -
Weblogic Server Shutting down execute threads
Weblogic 5.1 SP9 on Solaris.
After upgrading to SP9 from SP8 we are observing a new message in our log during
the START UP PROCESS. It seems that after performing a GC and during the creation
of the connection pools we are receiving a message "Shutting down execute threads".
Though Weblogic starts up ok after this and performs ok we are still concerned
on what execute threads are shutting down?
Any help in an explanation would be appreciated.
<I> <GC> GC: After free/total=505281560/531955712 (94%)
GC: After free/total=505281560/531955712 (94%)Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutting down execute threads
Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutdown completed
Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutdown completedcould you post complete the log file
right from the server startup to until WLS
listens on http & SSL ports?
Kumar
Andy wrote:
Weblogic 5.1 SP9 on Solaris.
After upgrading to SP9 from SP8 we are observing a new message in our log during
the START UP PROCESS. It seems that after performing a GC and during the creation
of the connection pools we are receiving a message "Shutting down execute threads".
Though Weblogic starts up ok after this and performs ok we are still concerned
on what execute threads are shutting down?
Any help in an explanation would be appreciated.
<I> <GC> GC: After free/total=505281560/531955712 (94%)
GC: After free/total=505281560/531955712 (94%)Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutting down execute threads
Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutdown completed
Wed Aug 08 18:08:33 EDT 2001:<I> <WebLogicServer> Shutdown completed
Maybe you are looking for
-
I have three separate email accounts showing up in my Mail program on my MacBook Pro. Two of them are my local email provider one showing up as SaskTel Email and the other showing up as sasktel.net. The third one is ICloud. Can I delete one of the
-
Can't press more than 2 directional arrows keys at the same time
I just noticed that in the Macbook Pro Retina that I bought recently there's no way to press more than 2 arrow keys at the same time, or at least the system does not seem to handle it. All other keys can be pressed at the same time without any proble
-
Do I need to have a SIM card when requesting an international unlock on my Iphone 4S?
Hi everyone, I know that I can request to unlock my Iphone 4S by calling the Verizon Global Support, but can anyone who has done that tell me what exact steps I'm gonna go through while getting my Iphone unlocked? Can any of you please tell me whethe
-
Hyperlinks in FrameMaker 8 File don't work consistently when PDF'd
I have a FrameMaker 8 file with internal hyperlinks. When I test them in FrameMaker they work but when I PDF the file SOME of them are not working. I'm using Acrobat 8 as well.
-
How to Copy Sales Order Filed in FI from SD while Creating Billing
Hi Everyone I was checking the line item report for my sales account. (FS10N or FBL3N). The problem is i am not able to see the original sales document number filed against that Sales Gl. Its not even visible on customer account line item details as