Determining memory consumption of web application
I'm at the beginning of a new Java web application project and I have to figure out if the application will fit to our existing application servers (Websphere 6.1) or if we have to think of new/more hardware. My main problem is memory consumption. I have a rather good idea of user numbers (500 users) but I have a hard time to determine the amount of memory each user will need.
Some facts: The web application will be Struts 1.3 based, it will have about five screens only (the GUI layer is smallish) and no native database. It will use a custom third-party framework for mainframe access. Communication with the mainframe's database will rely on XML (which is a constraint we have to live with for now). To put it simple: each SELECT or INSERT etc. will need a XML document. No screen will have more than 12 records, each record having about 20 datafields (which basically will be input fields for the user). My reasoning so far:
20 datafields * 20 characters * 2 bytes = 800 bytes per record
800 bytes * 12 records = 9600 bytes
9600 + 20 % "per-user-session" overhead = 11520 bytes -> 12 kilobytes
12 kilobytes * 500 users = 6000 kilobytes (note: this seems very low to me for 500 users)
But these 6000 kilobytes are "payload-only", the application will need more memory because of the frameworks (Struts, third-party framework etc...), it will have to create XML documents, it must create objects out of XML documents etc...and that's exactly the part where I have no clue about. Is it okay just to add the frameworks' jar files sizes to my number? Any idea about how much overhead XML will cause? Any hint or advice is greatly appreciated.