My organization migrated their stream gage monitoring application to a JS API based product and it's performance has been inconsistent so I'm wondering if I'm not publishing content with the right settings. Without getting too "in the weeds" about the JS side of things, the app performs deferred list of 16 queries against a standalone table inside a published service when the web map initially loads, and then every 5 minutes after initial page load.
Most of the time it works but some times the queries (which do seem to complete) return no records. I'm not seeing any errors in the console but the response from the callback lists an empty array of features. I can hit refresh about 7 times in a row and the app will look correct but the next refresh or so afterwords will have these empty query results returned.
I believe that most of the initial, default settings when publishing a service are used (High isolation, min 1, max 2 instance per machine) with one exception:
Pooling -> Maximum time an idle instance can be kept running: 180 seconds (default is 1800)
As an example of "high demand," yesterday was our most recent flood event and we had 5,690 sessions / 4,527 users / 13,136 page views from our application. During one part of the afternoon, the application had about 93 simultaneous users.