I have 3 node cluster and I am using ignite computation for parallel operation here I use Apply method.when Execute my job with three node cluster it required 15-20sec and when I run my job with the single node it required 3-5 sec so why it happens.As per Documentation when I use more node it required less time but in my case, it's totally opposite so please can you help me
2 Answers
Not for all cases a increase count of node brings performance improvement. How you can see it can bring inverse effect. If you tasks/jobs are lightweight then sending them on other nodes can add overhead and it can be significant for this kind of tasks. For execution remote tasks/jobs Apache Ignite serialize them, transportes on remote nodes via TCP/IP. On remote nodes those jobs are deserialize, executed and giving response in the same way (serialize, TCP/IP and etc).
In a case when you access objects from outer class in lambda, these objects will be serialized too, and this behavior gives overhead. As I can see from the code, you don't really need to access any objects out of lambda, you can move all object into the lambda.
Moreover, it will be better creating a static inner class instead of lambda.
Also, I would recommend to warm up JVM and Ignite before any measurements and run more than one iteration.
In Some cases you can use @ComputeTaskNoResultCache annotation, it could give a huge improvement if it fits your case.
I would also recommend reading this thread on Apache Ignite user list, it contains a few recommendations for improvements of compute grid performance: