JPro-one / JPro-Tickets

The right place to report about bugs or suggest improvements for JPro.
https://www.jpro.one
9 stars 4 forks source link

question on capacity limits #120

Open szczebel opened 2 years ago

szczebel commented 2 years ago

Hey,

I was not able to find this info in docs nor in other issues here.

Can you advise on how one can evaluate capacity limits of a JPro server, in terms of expected concurrent users? E.g.:

Can you provide values or hints regarding XXX, YYY, ZZZ? I know ZZZ is for the app author to figure out, although some hints on how to assess it would be welcome (e.g. some heuristics on how many Nodes my scene has times N bytes, or something like that).

Do you have any performance/soak tests results that you can share?

Thanks, Adam

FlorianKirmaier commented 2 years ago

After a quick empirical test i have some numbers for you:

XXX = 30mb, according to a quick test (the ram usage of a minimal hello world program) YYY = 0, the "constant" ram usage per session seems to be close to zero AAA = 40mb is used per 1000 used, according to my empirical data. (This has some optimization potential in JPro) ZZZ = Whatever your application is using

So the ram usage would be: 30mb + sessions 0.04mb (NodesPerSession) + [Your additional ram usage]

You also need some buffer for the JVM, of at least 20%. In General, I would recommend more ram as 500MB for the process - especially on production.

szczebel commented 2 years ago

Hey @FlorianKirmaier ,

Thanks for the data, I think this issue can be closed. If you ever get to do any soak tests, sharing results would be appreciated :> E.g. I'd be thrilled to see how many user sessions JPro server was able to handle for application X (maybe something more advanced than HelloJPro) on a box/container with 1GB of RAM, while serving moderate traffic (e.g. one user-click per second requiring full scene repaint) until it fried with OOM errors :D

Side question: how do I pass Xmx options to JPro server from commandline? I followed your sample for heroku deployment, so my Dockerfile has this: CMD ["sh", "-c", "/server/bin/start.sh -Dhttp.port=$PORT -Dbackend.url=$BACKEND_URL"] Now I want to add '-Xmx$XMX_LIMIT' to the jvm args; will start.sh accept this as an argument? CMD ["sh", "-c", "/server/bin/start.sh -Dhttp.port=$PORT -Dbackend.url=$BACKEND_URL -Xmx$XMX_LIMIT"]

FlorianKirmaier commented 2 years ago

yes, that should work. All arguments passed to the ´start.sh´ are forwarded to the JVM.