Concurrent User Submissions

Hello there,
Looking to better understand the functionality of how AppSheet handles high volumes of concurrent users. I have reviewed the documentation and it looks as though the concerns about multiple users only comes into play when they are editing the same row of data.
If I have ~1500 individuals needing to submit a form(within an 8 hour period), and the table has the โ€œkeyโ€ with UNIQUEID(โ€œUUIDโ€), am I going to run into any issues? Aside from long sync times?

0 12 768
12 REPLIES 12

Steve
Platinum 4
Platinum 4

I donโ€™t have experience with that volume, but conceptually, I wouldnโ€™t be worried.

Perhaps some other regulars have experience at this level? @MultiTech_Visions @Grant_Stead @Koichi_Tsuji @WillowMobileSystems @Marc_Dillon

In case of Google spreadsheet for data source , lower performance is expected technically speaking. If multiple concurrent users updates data, Appsheet deal with such request one by one, first in first serve basis.

Meaning letโ€™s assume 10 users update something exactly same time, on second level, then Appsheet to start to deal with request which come first. Then rest of 9 other queries will queue up. If one operation take 10 Sec to complete the last person need to wait for 90 sec to be served.

This is because Appsheet will lock the spreadsheet to other query while one request is attended. If request volume is high , potentially you may encounter timeout issue.

So far it is always better to host data on sql rather than spreadsheet to ensure better performance, as sql is working on row level lock as far as Iโ€™m correct.

@praveen

In addition to whatโ€™s already been saidโ€ฆbe aware that if you are using Google Sheets (and likely any Cloud datasource), there are limitations on the number of sheet queries over a period of time. I donโ€™t recall the parameters and they may have changed.

A โ€œnormalโ€ AppSheet app uses the App Creator account to house and interact with the sheet. So all sheet activity goes through this single account. If your sheets are implemented heavily with formulas, you could hit this query limit fairly quickly.

I experienced this problem when I first started out. I created an app where users were expected to pre-assign rows to themselves for an event. I would have them all (about 12 people) sit together and go through the pre-assignment. They would hit the query limit and have to wait for a few minutes to try again. I refactored the app to be more efficient and removed ALL sheet formulas and never had the problem again.

Bottom line - donโ€™t rely on sheet formulas to do the work for you. In fact, I always strongly recommend to NEVER use formulas in the datasource sheets. Especially if you have intentions of eventually moving the app to use a relational (SQL) database. Trying to refactor sheet formulas into the database can be very tedious work. If you always have a formula-free sheet, then moving to a database is as simple as lift and shift of the data and few minor tweaks of the database column types.

Have you by chance been able to formally test this theory out?

I often wonder about this. I did at one point have an app on a sheet and a copy on a database. After several days of playing with the two, I couldnโ€™t discern any performance differences. It was all rudimentary testing. It would be better if I could setup a test harness of some sort to provide accurate testing against the different datasources and data volumes.

This is something like when we go to clinic, then you need to wait for other patients to be served first as doctor can see pacient at one time. If queqe is long, waiting time is accordingly gets longer.

3X_7_a_7a42ce380b77bb512281627a945f6e0a16b2d2ab.jpeg

Mr. Bean could not wait patiently, then in other words, if this happens to AppSheet, we will see โ€œTIMEOUTโ€ and data change will fail, but this is extreamely rear case, I would call.

Yeah, I donโ€™t think youโ€™ll see any issues.

Thanks for all the responses. I have built many applications in the past but never had to worry about these items.

I am using sheets as a data source, but the tables are specifically created without formulas in efforts to increase efficiency.

All calculations and data transformations are done by AppSheet rather than Sheets.

I hope Sheets parameters will allow this level of activity. โ€œ500 requests per 100 secondsโ€. I think this will be an acceptable amount for my use case; however, I hope these parameters are per sheet rather than per user, as I have 4 tables that are updated from a single submission, but I have split them over 4 workbooks. If it is per user, each submission could potentially count as 4 requests.

There may be a chance that my organization has increased usage amounts through our enterprise agreement with Google.

The application is being released on Monday - Iโ€™ll report back.

These are the limitations I have found as of 6/15/2021:

This version of the Google Sheets API has a limit of 500 requests per
100 seconds per project, and 100 requests per 100 seconds per user. 
Limits for reads and writes are tracked separately. 
There is no daily usage limit.

I am not certain what the definition of a project is. I would assume itโ€™s the collection of tabs in a single Sheets file.

I am not certain what the definition of a project is. I would assume itโ€™s the collection of tabs in a single Sheets file.

For me, I am most worried about the โ€œ100 requests per 100 seconds per userโ€ especially due to the application running from the creatorโ€™s account. I am not sure if these parameters apply to the way AppSheet interacts with the Sheetsโ€™ API. Moments will tell!

Curious. Did you have any issues with your app roll out?

App roll out went smooth (thanks for checking in), but I did want to come and provide some insights.

  1. At peak usage the application saw ~400 adds in an hour, keep in mind the application was launched via email, this means the users naturally visited the tool as they checked their emails throughout the day.

  2. The Google Sheet rate limit was never reached, so the original question still stands. I am unsure if AppSheet runs the requests from the Creatorโ€™s account or through an AppSheet connection, with increased limit quotas. Also, I am unsure of the rate limit applies to all the Userโ€™s Sheets cumulative, or if it is 100 requests per 100 seconds per Sheet (or even worbook). This would be important to understand in the use cases that an application is invoking multiple requests, as you could then spread the load over multiple tables/sources.

  3. From User feedback, sync times remained short, they were reported most frequently as โ€œa few secondsโ€

  4. All bots and automations remained functional, with the only hiccup coming from a table join outside of the applicationโ€™s control, which impacted less than .01% of Users

My overall experience has lead my to the following understandings/assumptions, but please form your own opinions.

  1. AppSheetโ€™s platform can handle LARGE amounts of concurrent Users, as long as the application is read only, or if the Users are working within their own unique Keys/Rows. (avoid concurrent editing of the same data)

  2. AppSheet is not the limiting factor, Google Sheets is. Meaning, if you have a larger rollout that may impact a large organization, take the time to develop the application with a proper database IE SQL.

  3. 100 requests within 100 seconds is a large amount to begin with - I do not see many โ€œinternal useโ€ applications requiring anything more than this.

  4. If you are dealing with Google Sheets, a large amount of Users, and large datasets, ensure your you do not have any formulas running on the Sheet database, rather run the calculations within AppSheet.

  5. If you need to use Sheets due to organizational security protocols, or any other reasons, do some quick math to understand whether the application has potential of reaching the rate limit.

Top Labels in this Space