[wildfly-dev] Fwd: Pooling EJB Session Beans per default

Radoslaw Rodak rodakr at gmx.ch
Wed Aug 6 13:15:25 EDT 2014



Anfang der weitergeleiteten Nachricht:

> Von: Radoslaw Rodak <rodakr at gmx.ch>
> Betreff: Aw: [wildfly-dev] Pooling EJB Session Beans per default
> Datum: 6. August 2014 19:14:18 MESZ
> An: Jason Greene <jason.greene at redhat.com>
> 
> 
> Am 06.08.2014 um 17:13 schrieb Jason Greene <jason.greene at redhat.com>:
> 
>> 
>> On Aug 5, 2014, at 7:51 PM, Radoslaw Rodak <rodakr at gmx.ch> wrote:
>> 
>>> 
>>> Am 06.08.2014 um 00:36 schrieb Bill Burke <bburke at redhat.com>:
>>> 
>>>> 
>>>> 
>>>> On 8/5/2014 3:54 PM, Andrig Miller wrote:
>>>>>> Its a horrible theory. :)  How many EJB instances of a give type are
>>>>>> created per request?  Generally only 1.  1 instance of one object of
>>>>>> one
>>>>>> type!  My $5 bet is that if you went into EJB code and started
>>>>>> counting
>>>>>> how many object allocations were made per request, you'd lose count
>>>>>> very
>>>>>> quickly.   Better yet, run a single remote EJB request through a perf
>>>>>> tool and let it count the number of allocations for you.  It will be
>>>>>> greater than 1.  :)
>>>>>> 
>>>>>> Maybe the StrictMaxPool has an effect on performance because it
>>>>>> creates
>>>>>> a global synchronization bottleneck.  Throughput is less and you end
>>>>>> up
>>>>>> having less concurrent per-request objects being allocated and GC'd.
>>>>>> 
>>>>> 
>>>>> The number per request, while relevant is only part of the story.  The number of concurrent requests happening in the server dictates the object allocation rate.  Given enough concurrency, even a very small number of object allocations per request can create an object allocation rate that can no longer be sustained.
>>>>> 
>>>> 
>>>> I'm saying that the number of concurrent requests might not dictate 
>>>> object allocation rate.  There are probably a number of allocations that 
>>>> happen after the EJB instance is obtained.  i.e. interception chains, 
>>>> contexts, etc.   If StrictMaxPool blocks until a new instance is 
>>>> available, then there would be less allocations per request as blocking 
>>>> threads would be serialized.
>>>> 
>>> 
>>> Scenarion 1 )
>>> ------------------
>>> Let say we have a pool of 100 Stateless EJBs and a constant Load of  50 Requests per second  proceeded by 50 EJBs from the pool in one second.
>>> After 1000 seconds how many new EJB Instances will be created having a pool? answer 0 new EJBs  worst case 100 EJB’s in pool… of course object allocation is much higher as of course 1 EJB call leads to many Object from one EJB  but…let see situation without pool.
>>> 
>>> 50 Request/s * 1000 seconds = worst case 50’ 000 EJB Instances on Java heap where 1 EJB might have many objects…   as long as Garbage Collection was not triggered… which sounds to me like faster filling JVM heap and having ofter GC probable depending on GC Strategy. 
>> 
>> If you think about a single Java EE request invocation that processes data with one EJB in the call, there is typically hundreds of temporary objects created (perhaps even thousands when you are pulling back many rows of data from JPA). Aside from the container API requirements (the container has to create a string for every http header name and value, which can easily be 20+ objects), just writing plain java code that does things like substring creates temporary objects. Now, I don’t have an exact object instance count for an SLSB creation, but glancing at the code it looks ~ 6 objects. So we are talking about a very small percentage of object space, probably around 1-2%.
>> 
>> On the other hand the percentage could be high if you have an ejb method that doesn’t do much (e.g. just returns a constant) and you call it in a big loop as part of a request. Then you could get 6 * N object churn, which could very well end up to be a high percentage (for a large enough value of N).
>> 
> 
> This is exactly what I  was trying to point! 
> 
> 
> 
>> --
>> Jason T. Greene
>> WildFly Lead / JBoss EAP Platform Architect
>> JBoss, a division of Red Hat
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20140806/02be1ae6/attachment.html 


More information about the wildfly-dev mailing list