The database memory is your problem not how many connections you use. It seems there is so little memory left that it constantly is swapping to harddisk (which is real slow). Sollution would be to give your database more memory.
Alternative to Ronald’s suggestion, which is not possible apparently in basic, you can look into reducing your data set. The more data is in your database, the more memory it requires to perform reasonably.
depending on what/how much data, you can consider to create some at runtime (use non-persistent objects) to avoid DB. Of course this could create a new set of problems.
Your app should work just fine with 100 users if the dataset is small/modest with the basic package.
It's rather a lot of imbricated dataviews/listviews/listeners, which I don't know how to optimize.
This is the place to optimize in my opinion. Nothing has the ability to generate parallel queries (xas requests) like complex assemblies of data containers and their interaction with widgets.
Our first efforts at designing screens and search pages was maybe typical for newbies as we were, involving nested data containers and listviews with groups of search fields and filter dropdowns with other listening widgets. Ha ha. We quickly spiked our resources with just a small number of users.
Then we turned to querying against what we call ‘display objects’ – non-persistable entities representing the flattened datasets after necessary joins (resolved associations). This helped performance because it removed some nesting, all the data being returned in one big fetch.
Then that solution ran out of gas for our purposes and we turned to OQL queries to generate JSON to populate a custom datagrid widget using ag-Grid (this was before DataGrid 2). For the job of querying and slinging about large datasets this solution has held up the best and we still use it.
We frequently bounce up against 600 connections with 200 users in the system. But it’s better than using 600 connections for 100. You will need 32GB of RAM to handle 600 connections by the way.