First, and most important, your thread pool size is far too low for a production machine.
Some napkin math for you to work this out.
maximum thread in thread pool = 16 + ((num of cpu cores) * 4) + (peak concurrent connections)
Next, update your Java VM.
Your JVM is officially expired and out of date.
Would start with using official oracle JVMs, not the OpenJDKs series (at least in the Java 1.6 class).
1.6_29 fixed a number of JIT issues that caused problematic looping that caused a *wide* range of problems.
1.6_30 fixed an SSL regression introduced in u29
1.6_31 was a minor update (mainly for Timezone updates)
1.6_32 contained important networking and garbage collection bug fixes
1.6_33 had many updates, the only one impacting a server would be the Timezone updates.
1.6_34 had a bunch of networking and util/collections bug fixes
1.6_35 emergency patch for CVE-2012-4681 (not server affecting) and more Timezone updates
1.6_37 more timezone updates (and other non-server impacting updates)
1.6_38 networking fixes (for windows) and SSL close issue
1.6_39 more timezone updates
1.6_41 more timezone updates
1.6_43 announced end for Java 6, plus emergency patch for CVE-2013-1493 (not server affecting)
1.6_45 fix for Runtime.exec & RMI bug fixes along with (yup you guessed it) a Timezone update
At least get past update 38.
Also, if you are using SSL in production, it would be highly advised that you upgrade to Java 1.7, as many of the SSL fixes have not been put into Java 1.6.