Hi,
I have an integration that calls the target database through APIGEE. I have CDT of array which is array So the integration need to be called n number of times in parallel using MNI. I see the request sent to APIGEE for all the 11 records (test data had 11 records) available in the CDT sent at the same time but the response received by appian is taking more time even though APIGEE sent the response back under a second for all the 11 requests. Below are the apigee and appian logs. The duration increases for each thread in appian which seems strange when apigee sent the response in less than a second.
APIGEE log:
Request 1 till 11 received at 9:52:08 AM
Response 1 till 11 sent in 300 micro seconds at the max making it a response sent in less than a second
Appian process nodes
Request Started Completed Duration
Request 11 9:52:08 AM 9:52:16 AM 8.193 secsRequest 10 9:52:08 AM 9:52:16 AM 7.543 secsRequest 9 9:52:08 AM 9:52:15 AM 6.626 secsRequest 8 9:52:08 AM 9:52:14 AM 5.991 secsRequest 7 9:52:08 AM 9:52:13 AM 5.355 secsRequest 6 9:52:08 AM 9:52:13 AM 4.665 secsRequest 5 9:52:08 AM 9:52:12 AM 4.020 secsRequest 4 9:52:08 AM 9:52:12 AM 3.399 secsRequest 3 9:52:08 AM 9:52:11 AM 2.571 secsRequest 2 9:52:08 AM 9:52:10 AM 1.974 secsRequest 1 9:52:08 AM 9:52:09 AM 1.012 secs
Discussion posts and replies are publicly visible
Appian process execution is made to scale in number of simultaneous active processes, not in lowest execution time for a single node. MNI in parallel does not ultimately mean that each node instance runs at the exact same time.
Is that an issue in any way?
Also see community.appian.com/.../lag-using-call-integration-smart-service
Hi Stefan,
I was under the assumption that if i run 10 requests in parallel using MNI then it would take less time than the sequential call. For example, if sequential approach take 10 seconds overall to complete the 10 requests processing then the parallel would take around 5 seconds or less to complete all the 10 parallel calls. We have a requirement where we need to make parallel calls for N number of requests to load data for user interaction. Right now, 10 calls is taking more 15 seconds to load data on the page and when I see the MNI integration, its taking most of the time taken for completion of execution.
If this is just about loading data, why doing MNI? Can't you do that in an expression?
Sorry for the delay in response. It is not about loading the data. I make a search call which returns 50 parties and for each party I need to make a read call to get the relationship that party has with other parties. So if I call the read party 50 times in sequences then its taking too much time. I thought parallel call would reduce the time since threads execute in parallel but after implementing, I saw the completion time of each thread increasing in sequential manner even though the start time was the same for all the calls.
MNI in a process is in no way comparable to multithreading in e.g. Java. Process models in Appian are made to express a business process, not to implement high performance technical algorithms.
In Appian expressions, a forEach will try to execute iterations in parallel. docs.appian.com/.../Expressions.html