Hi Eric
Before I do so, I will have to setup a test
environment, where I will have reproducible results. It turned out that
our last test did not meet this requirement. It may be possible, that
other side effects influenced our test. This can easy happen, if you try
to come as close as possible to your planned live environment.
Yes, I forgot to also tell you that you need to typically run at least 10,000 iterations of each test case to warm up the JVM and the dynamically compiled code. What I typically do is run a full test first, ignore it, and run it again.
Thanks for that link! Up to now the instance is not tuned at all.
Oops.. the OS level tuning is very important for a high throughput benchmark run, as otherwise you would easily exceed the file handles (defaults to 1024 on most systems and this includes each socket etc as well..) and the ephemeral port range.. when you monitor the system during the test run, you can easily see these happening if you haven't tuned your system. Also make sure your systems are connected with Gigabit ethernet, and that the links actually are started at that speed.
Hardware-Info for test ESB instance:

2 CPU with 2 cores each (Intel(R) Xeon(R) CPU X5365  @3.00GHz)

cat /proc/meminfo
MemTotal:     16463852 kB
Cool :-) ! However, whats the amount of heap you allocate to the ESB process with -Xms and -Xmx? Do you run any other processes on this system?

Linux version 2.6.23.1-amd64-75
Hmm.. are you running a AMD 64 bit version on an Intel Xeon?
java -version
java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) Server VM (build 1.5.0_10-b03, mixed mode)
Seems like your OS is 64 bit, but your JDK is 32 bit.. also I would go for 1.5.0_14 unless you have any known specific reasons with it. I would also try the 32bit OS and JVM first as they are more comfortable to work with and are known better.. Also, if you are really interested about performance, and want to squeeze the maximum out of the NIO transport, you could use the epoll <http://blogs.sun.com/alanb/entry/epoll> support available with JDK 1.5.0 update 10 <http://java.sun.com/j2se/1.5.0/ReleaseNotes.html#150_10> and later. Since you are using a Linux kernel > 2.6, this would be possible
Thanks for your offer! But at this point this is almost impossible.
That's why I will work to setup a new test environment, which on the one
hand will be not that far from the production use cases but far enough
to not get influenced by to many side effects.
It would be best to simulate one of your most common cases and use it to measure, tune and validate. Unless you can consistently reproduce and measure your performance, its not going to be easy to understand what changes are good and what are bad.

For example, I have tried the many JVM memory parameters, and tuning the GC algorithm, and other stuff quite a lot - but one lesson I have learn't is that the newer Hotspot JVMs <http://java.sun.com/javase/technologies/hotspot/index.jsp> are really good - to the point that you don't really need to 'tune' them a lot more! They check the available memory and detect if the system is a 'server class' machine, and auto tunes the generations and the algorithms - sometimes even better than you could do!
Yes, we will always use HTTP 1.1. Messages will be sent out via Apache
HTTPClient. Shall we set some specific options there? In our code I
could only see disable.expect-continue and disable-keep-alive. I will
have to clarify why we use them. One comment seems to indicate a problem
with XFire in conjunction with Weblogic bridge and HTTP 100.
Opps.. always use keep-alives, this is default with HTTP 1.1 and that gives a tremendous improvement in performance, as else each socket would need to close, re-cycle and be re-used for each new message.. The ESB uses keep-alives by default - unless your client says to 'Connection: close' in the HTTP headers of the requests. If by any chance you are not using keep-alives already, doing so will bring great improvements for sure

asankha
_______________________________________________
Esb-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev

Reply via email to