By now, you are hopefully well aware that Glassfish 3.1 has been released. Because the performance group has been a little quiet lately, maybe you're thinking there aren't a lot of interesting performance features in this release. In fact, there are two key performance benefits: one which benefits developers, and one which is important for anyone using Glassfish's new clustering and high-...
on Mar 1, 2011
For most of the year, I've been working on session replication code for Sailfin. When I came back to work with the Glassfish performance team, I found that we had some pretty aggressive goals around performance, particularly considering that Glassfish V3 had a completely new architecture, was a major rewrite of major sections of code, and implements the new Java EE 6 specification. Glassfish V3...
on Mar 24, 2010
Avid readers of the glassfish aliases know that we are frequently asked questions about why their server isn't responding, or why it is slow, or how many requests are being worked on. And the first thing we always say is to look at the jstack output.
So you're running on a Sun 5120 with 128 hardware threads and so you have 368 request processing threads and the jstack output is 10K lines. Now...
on Oct 16, 2009
As a performance engineer, I'm often asked which X is faster (for a variety of X). The answer to that question always depends on your perspective.
Today, I'll talk about the answer in terms of hardware and application servers.
People quite often measure the performace of their appserver on, say, their laptop and a 6-core, 24-thread Sun Fire T1000
and are surprised that the cheaper laptop can...
on Apr 1, 2008
Recently, I've been reading an article entitled
The Fallacy of Premature Optimization by Randall Hyde. I urge everyone to go read the full article, but I can't help
summarizing some of it here -- it meshes so well with some of my conversations with developers
over the past few years.
Most people can quote the line "Premature optimization is the root of all evil" (which was
popularized by Donald...
on Feb 25, 2008
I've written several times before about how you have to measure performance to understand how you're doing -- and so here's my favorite performance stat of the day: New York 17, New England 14.
on Feb 3, 2008
I spent last week working with a customer in Phoenix (only a few weeks before the Giants go there to beat the Patriots), and one of the things we wanted to test was how their application would work with the new in-memory replication feature of the appserver. They brought along one of their apps, we installed it and used their jmeter test, and quickly verified that the in-memory session...
on Jan 22, 2008
When I reported our recent excellent SPECjAppServer 2004 scores, one glassfish user responded:
I sure wish you guys were able to come up with a thorough write upabout the SPEC Benchmark architecture, and the techniques you guysused to get the numbers you get and, more importantly, how thosetechniques might apply to every day applications we run in the wild.
While we do have a full performance-...
on Dec 3, 2007
Last week, Sun published a new SPECjAppServer 2004 benchmark score: 8439.36 JOPS@Standard . [I'd have written about it sooner, but it was published late Wednesday, and I had to go home and bake a lot of pies.] This is a "big" number, and frankly, it's the one thing that's been missing in our repertoire of submissions. We'd previously shown leading performance on a single chip, but...
on Nov 26, 2007
Today, Sun officially announced SPECjAppServer 2004 scores on our Sun Java
Application Server 9.1, which (as you no doubt know) is the productized
version of the open-source Glassfish V2 project. We've previously submitted
results for SJSAS 9.0 (aka Glassfish V1), which at the time we were quite
proud of: they were the only SPECjAppServer scores based on an open-source
application server, and...
on Jul 10, 2007
One of those lesser-known features of Java is that it contains two
different bytecodes for switch statements: a generic switch statement,
and an (allegedly more optimal) table-driven switch statement. The
compiler will automatically generate one or the other of these
statements depending on the values in the switch statement: the
table-driven statement is used when the switch values are close to...
on Jul 9, 2007
Almost every thread pool implementation takes great pains to make sure
that it can dynamically resize the number of threads it utilizes: you
specify the mininum number of threads you want, the maximum number, and
the thread pool in its wisdom will automatically configure itself to
have the optimal number of threads for your workload. At least, that's
But what about in practice? I'd...
on Jun 7, 2007
Recently, I've been asked a lot about Covalent Technologies report that
6 can scale to 16,000 users and what that means for glassfish.
Since glassfish can easily scale to 16,000 users as well (as Covalent
found out once they properly
configured glassfish), my reply has usually been accompanied by a
shrug: we've known for quite some time that NIO scales well.
But what does it mean to...
on May 2, 2007
For the fifth time this year, I've been contacted by a distraught user
claiming that glassfish doesn't scale or run well based on results seen
from ab (the Apache
Benchmark). And so again, I've had to explain why ab is a terrible
tool to use to measure the performance of your application (or web)
To be fair, glassfish does have some out-of-the-box settings that make
on Mar 23, 2007
Today, Sun releases version 9.0 Update Release 1 Patch 1 of its application server (quite a mouthful!). See what's new in this release.
From my perspective, its most important fix is to a bug that caused the SPEC organization to mark our previously submitted SPECjAppServer scores as non-compliant. This allowed us to resubmit results on this benchmark.
Accordingly, a few weeks ago we resubmitted...
on Dec 14, 2006
Today, Sun posted our first-ever SPECjAppServer 2004 result on SJSAS 9.0
Platform Edition. This is the only SPECjAppServer result published so far
on an open-source application server -- and the result used an open-source
Operating System (Solaris 10) and open-source database (MySQL) as well.
It is also the first (and so far only) SPECjAppServer result published on
an application server that is...
on May 25, 2006
I am a creature of habit. At some level, I understand that a syntax-directed powerful editing tool might make me
more productive. But vi has been good enough for me for the past 25 years; it will be good enough for the next 25.
This is pretty much emblematic of my (problematic) approach to technology.
Why, then, have I recently switched to using the NetBeans profiler? Yes, it's free and powerful...
on Feb 13, 2006
One of the things that always interests me is the relative performance of
the collection classes. Recently, I discovered a particular anomaly of
the ConcurrentHashMap class.
I've always considered the ConcurrentHashMap class as something to be
used in special cases: use a Hashtable, and if you notice a lot of
contention for your hashtable, then switch to a ConcurrentHashMap. Of
on Dec 9, 2005
I was a little surprised to find the JavaOne 2006 Call For Papers in my email this week; wasn't JavaOne 2005 just last month? It can't be mid-November; it's been 60 degrees for weeks in New York.
If you're interested in presenting anything releated to Java EE performance at JavaOne, I encourage you to submit an abstract. We did not have the largest selection of such talks last year, and I'd like...
on Nov 11, 2005
For the last few years, I've worked in the Java Performance Group at Sun
Microsystems. So I thought it might be good to begin my first blog entry by
talking about what's important in looking at performance.
I'm prompted to look into this topic because of a recent blog by
who discusses the performance of SPECjAppServer 2004. The thing about
application server benchmarks -- and...
on Sep 30, 2005