I'm developing a system in java that should be running 24/7 on a linux box. It is a soap consuming application and should be making about 15 calls per second. I'm aware of the premature optimization thing, but as this application is handling some considerable amounts of money I'm looking to know if there is something in Ubuntu to set up for maximum robusteness, or maybe choosing other distro or read about something, because I'm not experienced in this kind of application.

  • 1
    I think you will find this question is far too general for a QnA site that focus on things with definite answers. "Maximum robustness" doesn't really mean anything, isn't that what most operating systems all strive to be? Also, please take more care when asking questions to properly capitalize and punctuate, otherwise people won't want to take the time to study your question. – Caleb Jun 23 '11 at 19:36
  • thanks for your comment, and sorry for having an general question – daniel Jun 23 '11 at 19:45
  • Please do not roll back my edits! I fixed your punctuation and capitalization so the message was readable. I also removed the signature and thanks like to comply with the site rules. If I made mistakes or you can further improve it, do so, but don't revert the whole edit. – Caleb Jun 23 '11 at 19:51

Distro is unlikely to make much difference in this regard. Generally speaking, 15 socket connections per second is peanuts on modern hardware. It is very likely that your code is going to be the problem, not the underlying OS. In particular, you may come to regret the overhead associated with SOAP calls. I have observed SOAP operations spending 80% or more of the CPU usage for XML-related overhead.

Some development-related answers:

  • What may (unfortunately) matter is which JVM you are using. In particular, there are large behavioural differences between the various 1.6 SUN JVM versions as regards to memory allocation.
  • One of the main problems with high performance Java is that the parameters you want to tweak are often hidden by abstractions. Be prepared to create local forks of third-party software. Stick to open source software or commercial suppliers where you have good support directly from the developers.
  • All these things means that you will need to construct benchmark unit/integration tests. Write a client to your server that does 15 parallel calls and see how long it takes to get a response. Write unit tests that fail if the total execution time of 1000 calls thru critical code paths take more than an established number of milliseconds.

If "some considerable amounts of money" translates to expensive downtime, I think that you probably want to focus on uptime rather than performance. Can your application be redundant and/or clustered? How quickly can you restore from backup?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.