Still looking for answer: we have 80 concurrency r...
# suitescript
k
Still looking for answer: we have 80 concurrency rate and still getting exceeding limit error.
s
Have you installed the Application Performance Management SuiteApp and tried looking at the Concurrency Monitor ?
k
Yes we do have but it doesn't say anything like we received request per sec or per min
s
It is 80 web service calls simultaneously. If you have a lot of Restlets that run for a long time, or perform a lot of big searches over SuiteTalk, you can tie up connections for a while
Anyway, that page should tell you if your peak concurrency is hitting the limit, and give you an idea of how often
k
how those 80 calls works ?
how one extra call get rejected and how is that works
s
These are external web service calls into your NEtSuite environment. Not logged in user sessions.
Are you not the ones making the web service calls into your account?
k
We are making from others services like AWS Lambda to Restlet
s
Okay. what is your peak concurrency then? IF it’s above 80, then you need to use a strategy to avoid making to many calls at once, or use a backoff/retry approach
k
sorry it is 87 is our peak concurrency as per monitor
ignore above one and it Looks 62 is our peak concurrency
then you need to use a strategy to avoid making to many calls at once, or use a backoff/retry approach ? how can we approach this strategy ?
what is ideal limit to make calls ?
d
depends on your NS tier and if you have SuiteCloud Plus licenses.
Lookup "SuiteCloud Plus Settings" in suite answers. It will give you the concurrency limits.
k
Dcrsmith - We have 80 limit but not understand per min request and how it calculated
d
Concurrent - This means the simultaneous number of executions. When I setup external connections I always recommend that the external system look for the
SSS_REQUEST_LIMIT_EXCEEDED
error, wait and try again
k
Noted and how that simultaneous works for 80 limit ?
We can do if we have small amount of errors but when we have huge numbers, it is totally costing us
s
First, consider the frequency of your lambda calls to NetSuite. Do you need to be making many call so often? What is the nature of these calls? You can't hammer NetSuite with a constant barrage of web service calls, it imposes the concurrency precisely to stop people from doing this. You need a different integration design that uses fewer calls
💯 1
k
It is order creation in NetSuite and want to cut down to fewer calls and frequency
d
Your lambda needs to check for the above error and if it occurs then you need to resubmit the request again after a wait time. Something like 1-2 seconds might work. It depends on the Restlet and what all it's doing. It sounds like maybe you need to redesign the Restlet. Maybe think about creating a custom record with the request and using a M/R or something to create the orders after the response. There is always a way to redesign the solution.
k
what do you think is ideal limit calls for 80 concurrency ?
s
So, rather than making a call for every order as it happens, try queuing them up in AWS somehow, then sending all the orders received in the last time period, say every 30 or 60 seconds. You will likely still need to offload the order creation to another process like a Map/Reduce or Scheduled script, so that you aren’t tying up your Restlets with bigger/longer calls, as that won’t help concurrency much.
b
Might suggest using something like SQS so you can control the number of simultaneous requests. Put them in the queue, then set the queue dequeue batch size to something reasonable (less than 80)
💯 1
k
Brendon - Totally make sense! we have places SQS and placed all in staging area. then processing to NetSuite. we didn't set up size limit. but we got now to set 200 but will reduce to less than that if we are getting any errors
Thank you everyone for input and really appreciate.