• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Performance improvment - how to get started?

 
ambika mullasseri
Greenhorn
Posts: 28
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have an application that runs on jboss 5, uses struts2 ,JAXB, Apache HTTP client to contact other servers in business logic, oracle db for some select operations and insertion of logs.There is a heavy use of concurrent hashmap for session management,there is lot of static data being cached in servletcontext too .the TPS that i get now is around 150 TPS and the requirement is to get 3000 TPS,

1. is this realistic?
2. what are the things i can start looking at?

using java 5 now

Thanks for any pointers and help

 
fred rosenberger
lowercase baba
Bartender
Pie
Posts: 12024
25
Chrome Java Linux
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The first step with performance improvement is always to run a profiler, and find out where your code is actually spending the time. It does no good to try and improve your algorithm if you are always waiting on disk access.
 
Chris Hurst
Ranch Hand
Posts: 443
3
C++ Eclipse IDE Java
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Profiler as previously stated is top suggestion but also consider doing some gc logging (JVM option) and visualize it, just to check your not doing a lot of full gc etc.

After that profile your DB queries and look at what OS gives you eg iostat etc
 
Tushar Kapila
Ranch Hand
Posts: 35
Chrome Java Linux
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
3000 TPS with one server node? that does not sound very optimistic. there are limits on harware too - sockets a server can use, ram, cpu ... 150 seems to be pretty good.

most of the profilers i have used work better with java 6, so maybe you could look at migrating.

when we had we used selenoium to make a test suite for the web app, a few unit tests, migrated to java 6, then ran the suite again. we did not have any issues except for some entries in the jvm as we use a hsm server ...

but automated testing helped verify that.

we use a lot of cached data too - in static hash maps - they are okay as long as they are load once or load occsaionally read many times. but you mentioned " concurrent hashmap for session management,there is lot of static data being cached in servletcontext"

do you start any threads/ java timers or use jms in the same jvm -> should be fine as long as other threads dont write to the same context or maps. again a profiler would help if there are issues.

 
Jeff Verdegan
Bartender
Posts: 6109
6
Android IntelliJ IDE Java
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Another important step in improving performance is to identify measurable requirements. Although performance improvement often starts with somebody complaining that something "feels slow", when it comes time to do the work, you need a measurable goal, such as "at most N seconds to render a page", or "at least N transactions per second", etc. Without one, it's hard to compare different approaches and hard to know when to stop.
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic