Considering our benchmarking work through our performance team we have actually discovered
that we actually need pooling of Stateless Session beans, because of memory allocation
rates being too high.
Allocating objects is fast in the latest JVM's, that's for sure, but you can
easily create a situation where the memory allocation rate becomes too high, and you start
getting excessive GC overhead.
With that in mind, we have recently created (John O'Hara did the work from the
middle-ware performance team), a new implementation of the StrictMaxPool. That
implementation uses a ConcurrentLinkedQueue as the underlying data structure, as the
original used a simple LinkedList with synchronization, so essentially all accesses to the
pool were serialized. So, this didn't scale. The new implementation is upstream in
Wildfly 9. There is no configuration change necessary, as it replaces the old
implementation and is compatible.
Like everything, there are tradeoffs, and the mantra that has spread recently that pooling
is bad, is simply not the case. In some cases, allocating an object everytime is the best
approach, in others cases pooling will be the best approach.
Fortunately, you can do either in Wildfly (and EAP). Like always, you have to test your
specific application, in the properly configured environment to know for sure.
----- Original Message -----
From: "Wolf-Dieter Fink" <wfink(a)redhat.com>
To: "Ralph Soika" <ralph.soika(a)imixs.com>,
Sent: Monday, July 21, 2014 11:39:12 AM
Subject: Re: [wildfly-dev] Pooling EJB Session Beans per default
as I said in your community thread (
) it is not only the
problem to add a pool for it.
At the moment there is only the strict-max-pool which limit the total
number of beans pooled - and also the total number of beans which
can be used in parallel.
So that means adding the pool is a performance issue, which can make
the situation better or worse depend on the application.
So you need to adjust it depend on your needs.
If there is another implementation of a pool, i.e. which allow to
have x pooled instances and more if needed, the pool might be back
For the moment it is makes no difference or is faster (in most cases)
On 21/07/14 18:16, Ralph Soika wrote:
> I want to discuss the topic of Session Bean Pooling in WildFly.
> know that there was a discussion in the past to disable pooling of
> EJB Session Beans per default in WildFly.
> I understand when you argue that pooling a session bean is not
> than creating the bean from scratch each time a method is called.
> From the perspective of a application server developer this is a
> clear and easy decision. But from the view of an application
> developer this breaks one of the main concepts of session beans -
> the pooling.
> As a application developer I suppose my bean is pooled and I can
> one of the life-cycle annotations to control my bean. This is a
> basic concept for all kind of beans. First I thought it could be a
> compromise to pool only these beans which have a life-cycle
> annotation. But this isn't a solution.
> Knowing that my bean will be pooled allows me - as a component
> developer - to use this as a caching mechanism. For example time
> intensive routines can also cache results in a local variable to be
> used next time a method is called. This isn't a bad practice and
> increase performance of my component depending on the pool
> So my suggestion is to pool also stateless session ejbs in the
> future. I guess form the specification there is no duty to pool
> beans. So there is nothing wrong when not pooling beans. And again
> don't want to criticize. But at the end not pooling will decrease
> the performance of WildFly. Not the container itself but the
> applications running in WildFly.
> It takes me a long time to figure out why my application was a
> bit slower in WildFly than in GlassFish until I recognized the
> missing pooling. I can activate pooling and everything is cool. But
> I guess some other application developers will only see that there
> application is slower in WildFly than on other application servers.
> And this will effect their decision. That is the argument to
> the pool per default.
> best regards
wildfly-dev mailing list