I have simple web-based rule processing application where input is HTTP POST request. I have implemented HTTPServlet which receives such request, matches and processes as per rules defined and perform action (e.g. send email).
I am using HSQL Database for storing data (including input request and rules). I am using jakarta dbcp for database connection pooling. EJB is not used.
What are design considerations w.r.t scalability and efficiency? I want to handle atleast 20 requests/second without any connection refused error. I am facing 100% CPU usage right now.
Any design tips would be really helpful.
"I want to handle atleast 20 requests/second without any connection refused error. I am facing 100% CPU usage right now."
Well on what hardware?
Did you run the application inside a profiler to see where it spends most of it's time?
How many queries do you fire into the database and what kind of complexity? (for example, are you retrieving the same set of rules over and over again, instead of trying to hold them into memory until they are changed)