I really impressed with all the stats and performace tips provided in this discussion. Could you please let me know about your enviornment. Also did u tried the Regression testing on your application. If yes could you please post your stats.
Thanks for the comment. I am on vacation right now but checking this thread.
For what I can remember without my system in front of me for the server:
Windows 2000 professional sp4
Mustang 1.6 b91
JBoss 4.0.4 GA
Intel P4 3.0GHz HT Northwood core
Regular DDR 400
Two hard drives one for operating system and one for the apps and data
There are some details I have not mentioned because I would need more time and a separate web site to talk all about it. I have a regular job like the rest of you and this is just a long term fun project I can do but hope to release soon the entire system for everyone to use on the internet.
The client is experimental design so I am not talking about that till it is released.
Hope that helps.
Finally upgraded last night from Intel P4 3Ghz (Northwood core) DDR400 to AMD64 3800+ AM2 DDR2 800 early in morning today (2:00AM).
Quickly ran test and was getting little over 5msec total transaction response time over internet for single hop short distance was 7-8msec before upgrade. Still on Windows 2000 professional OS but hope to find Vista somewhere and test 64-bit operations then will mention results here.
Interesting but expected vast improvements in database access (from 6msec to 1 msec improvement). reason I expect is faster memory since improvements were probably from in-memory tables/data.
Have not upgraded client (windows xp sp2 Centrino Duo DDR2) so expect will probably reach only to 3-4msec transaction time as measured at client. Will make measurements over next day or so to see if reached 1usec or better trnasaction time per thread at app server (JBoss 4.0.4 GA).
Have fun all!
Okay I am down to 2usec for logins and 7-8 usec for most everything else in the servlet layer of TomCat/JBoss in 32-bit mode.
Looking at AMD64 X2 4600+ AM2 to replace AMD64 3800+ AM2 but probably better off with AMD 62 FX that has 1MB L2 cache instead of the 512KB cache.
Have fun all.
Okay, Learned something new last night. My logins are actually below 1 usec because the timer System.nanoTime() in my timer class was taking 1.072 usec.
I am working on a solution for caching that looks like I might get down to the 40-50 nansecond range for the cache. then hopefully I will be down to less than 100 nanoseconds for transactions. I should be up to around 10-50 million transactions per second.
Over the weekend I was able to come up with a simple light weight cache that got me what I needed that was beyond a HashMap in simplicity yet the performance was in the nanosecond or picosecond range (0-999 picoseconds) I had a problem measuring the execution time since it had a tendancy to drop below a nanosecond using the System.nanoTime().
Got to go to my real job.
I tried some testing regarding the time it takes to start JBoss and I am getting 18 seconds on a AMD64 3800+ AM2 1GB DDR2-800 on Windows 2000 Professional. I am loading a big EAR (9MB) because of inclusion of Web Services jar for JAX-WS.
I set up a RAM Drive and put JBoss on it but I saw no startup improvement. I also went through the config files to remove unused services and removed console logging but not sure that improved performance.
My guess is that the startup is CPU bound since it used to take 30seconds before I upgraded CPU/Memory.
Final Hardware Upgrade.
Upgraded finally from AMD64 3800+ AM2 to AMD64 X2 4200+ AM2. Everything else on the motherboard stayed the same.
My JBoss startup time went from 18seconds to 14seconds or 22% improvement.
Just further proof that the startup time is CPU bound.
Sorry for being away so long. Been busy working on the front end of the web system that uses JBoss for the app server. Was able to release the system today and some information can be found at theserverside.com at:
I was getting less than 70msec response times across the country using web services with JBoss & JAXWS 2.0. I have upgraded to JBoss 4.0.5GA and JAXWS 2.1 but have not had the opportunity to to try testing across the US yet.
Have a Great 2007!
i have one problem, i think u could help me :)
1. OS - Sun Solaris SPARC 64-bit.
2. Java - JDK 6.0
3. Hardaware - Sun Machine (4 CPU, 16 GB Fis. Memory, 31 GB Swap)
4. AS - JBoss Application Server 4.0.4 GA.
5. Project - EJB 3.0 and JSF Technologies.
6. Jboss run.conf file
JAVA_OPTS="-server -Xmx7168m -Xms6144m -Xmn2g -Xss256k -d64 -XX:PermSize=128m -XX:MaxPermSize=256m -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -XX:+AggressiveOpts -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:gc.log"
i have 4 or 5 jar ejb file and after a 10 or 15 redeploying i get an error
Perm. Gen. Space Error.
if would be nessasity i will be post full stack trace
is there any ban conf ?
can u help me ?
It seems like 128m is enough memory for most implementations.
Yes supply a stack trace. You could also try jconsole to monitor JBoss and see if it shows how much Perm space is actually used.
The other thing you might do is check the bug fixes for 4.0.5GA to see if there is any memory leak issue with the version of JBoss you are using.
You can also use jmap with the -heap option to check your permgen.
It will give you a listing of different areas of the jvm memory footprint, permgen is at the bottom. It's a quick way to take a look.
You run it with jmap -heap <jboss jvm pid>
/usr/jdk1.5/bin/jmap -heap 7302 ... Perm Generation: capacity = 134217728 (128.0MB) used = 79881104 (76.18055725097656MB) free = 54336624 (51.81944274902344MB) 59.51606035232544% used
On this box min and max permgen is set to 128M. If you don't have them both set to the same value (aka pre-allocated), jmap will tell you what value was being used when you ran the command - the value will be "capacity".
In my case, someone had set the box to 300M for permgen. Checking with jmap -heap over a weeks period made me realize that 128M was enough for this box.
I am facing big problems with jboss 3.2.7.
we have :
2 big Ip
3 Hp DL 320 with (1 Go Ram 3.2 Ghz, 1 Cpu) apache web server
4 Hp DL 580 with (14 Go Ram 3.2 Ghz, 2 Cpu) Jboss App server
4 Hp DL 740 with (18 Go Ram 3.2 Ghz, 4 Cpu) Oracle
OS : Linux Redhat
We have a J2EE application with struts, torque, Ejb, jsp, servlet, ....oracle database. This application is used to cash customer, we are not able to manage approximatively 48000 transaction/hours.
After one hour of cashing, we have to reboot the server to free the memory, if you make a top on your linux console you will see that only 2 Go of memory are used. Please can u give me advised to fine tune my server such to improve the quality of service to customer.
We have sales point in a 500 000 Km2 and this is creating big commercial issues, i have a support contrat with jboss and we are planing other actions.
Before this does some body can advise me one fine tuning or advise me to upgrade AS, WS version if needed.
I'm sure everyone here would like to see your JVM options to start with...
HOWEVER, since you have a JBoss service contract, please open up a case with them and mark it as a "Production is down".
They should be calling you pretty quickly, and if they don't then you should call them! Needing to limp along and re-boot your servers once an hour is pretty awful.
Jerry, i open a open a case and i am waiting for a quick answer from jboss.
I check my log every time that the server crash, i see a NestedSQLException from jboss log. He said that there is not available connexion managed from the pool. When i check my database, there is not any cpu problem, any memory problem, ...All connection are inactive in the database.
I see on forum that this problem occured with jboss since 2003. So waiting that i get a quick answer from jboss, would u have an idea on how to help jboss to manage well the pool connection and reinitialise the inactive connection in the pool such to make it available.