Some javascript/style in this post has been disabled (
why?)
See inline for my comments.
rjoshi wrote:
Girish,
Thanks for your quick response. No, long term is related to the
longevity test and not the long running BPEL process. Our average request
processing time (POJOSE<==>BPEL<==>BC) is less than 200 mill seconds. Also
POJO Service is triggered by Http SOAP BC, like below?
Http Soap BC<==> POJOSE<==>BPEL<==>BC
If so then what is the processing time for a message triggering POJO
service?
Http Soap BC<==> POJOSE (multiple calls to BPEL)
<==>BPEL<==>BC
number of requests per second is much lower than number of threads
allocated.
This doesn't happen if I run test for less than an hour. So
1. do you think some garbage collection logic is not able to cleanup these
threads and eventually all threads are occupied?
Not sure, seems like threads are not getting released somewhere, if
POJO Service itself is taking less than minute and number of such
requests are considerably less than number of threads.
2. Is there anyway to set timeout for synchronous request to avoid the
blocking of thread?
Currently no, I will add new method with timeout parameter.
3. Do you suggest any changes in threadpool/queue size configuration?
Could you file a bug, we need to investigate further what is the issue.
NOTE:
*BPEL persistent is not enabled.
*Average request processing time is around 200 mill seconds and max
processing time is 1 second (on jmeter)
*All requests passing through NMR are two way.
*Here is the config:
ThreadPoolBlockingQueueSize=700
MaxThreadPoolSize=700
CoreThreadPoolSize=350
* POJO-SE is used as a complex router which invokes multiple BPEL services
synchronously and sequentially so it would be very difficult to alter the
logic to make it asynchronous calls. E.g POJO-SE invokes BPEL endpoints A, B
, C using two ways requests and calls are synchronous which means it can
not invoke service B before response from A comes back.
Girish Patil wrote:
I am assuming "longeterm", you meant long running BPEL process.
POJO SE synch calls to long running BPEL Service/process will block
the POJO SE threads, especially when POJO Service is waiting for BPEL
process to respond with acknowledgment (for InOnly) or Output message
(for InOut).
In this case async calls from POJO SE will block the the thread, and
not efficient. It is recommended to use asynch calls in this case.
We do not have sample on the Wiki yet, here is the driver test for
reference[1].
-Girish
[1]
http://fisheye5.cenqua.com/browse/open-jbi-components/driver-tests/pojose/asynch/InOuts
rjoshi wrote:
When I ran a longevity test, I see POJOSE throwing "POJOSE-4101:
Allocated
threads and blocking queue are full" error.
This error message happens to appear if load is too high. That is
acceptable. But it also appears while longterm runs on a stable load
causing
in a short while system fully non-responsive and rejecting all messages.
When this happens the CPU usage drops from 40-50% to 4%.
Here are the configurations.
ThreadPoolBlockingQueueSize=700
MaxThreadPoolSize=700
CoreThreadPoolSize=350
I use synchronous calls to communicate with BPEL.