I'm attempting to benchmark JBoss 4.0 against Borland Enterprise
Server (BES) 6.0.
I've been reading a couple of performance tuning articles/papers
on JBoss. However, I've some trouble figuring out if things apply
only to a particular 4.0 release, or a 3.2.x or a prior one.
Let me enumerate through what I have done in 4.0, and what I
am looking for/have missed (correct me if I am wrong):
(1) Benchmark uses only Commit Option B in entity beans.
This is default for JBoss 4.x (as well as BES). Will
try commit option A at a later stage. No special entry
needed for Commit Option B in Jboss. Clustering not
important for this benchmark.
(2) Jboss: Use of Instance-Per-Transaction Policy. I set
this in "jboss.xml"
<configuration-name>Instance Per Transaction CMP 2.x EntityBean</configuration-name>
(3) Jboss: No-select-before-insert (no class name needed?) in
<entity-command name="no-select-before-insert" />
(4) PreparedStatementCache size
(5) Jboss: Read-ahead strategy on find: in "jbosscmp-jdbc.xml"
(6) cache list max
(7) Disabled debug in: CachedConnectionManager
in "jbossjca-service.xml" (debug is false)
Most/many of the above are already the default in BES, and so
out-of-the-box performance & scalability is not really a major
pain. My initial tests on a big multi-CPU box (single JVM)
showed an out-of-the-box Jboss lagging behind by an order of
magnitude, but I have the performance difference down to a
50-100% difference now under the same JDK, identical tuning
(1) Are the above accurate?
(2) Any more perf influencing params I have missed?
(3) Any mechanism to limit the thread pool size
of the EJB Container?
(4) Anymore disabling of timers/stats gathering?
(5) SFSB passivation timeout (default?): disabling?
(6) .... ?