Re: Slow Ignite Cache with multi-nodes
Hi Rick, I have tried your test on my local machine and haven't seen for single node = "Put 10 KV data: spend 3864 milliseconds" for three nodes= "Put 10 KV data: spend 10311 milliseconds". It is not clear results due to all server nodes have been run on the same physical vm, but running on different vms should show much better results. I would highlight a few points: 1. Using an ignite client to populate data and perform warm-up before checking performance. 2. Check network latency between ignite nodes. 3. All server and client nodes should be run of different physical vm. 4. It makes sense to look at ignite benchmark framework and existing performance results. [1] https://apacheignite.readme.io/docs/perfomance-benchmarking Thanks, Pavel 2018-04-13 10:44 GMT+03:00 <linr...@itri.org.tw>: > Dear Sam and Nikolai, > > > > My case is similar to this one (Performance with increase in node) . > > > > So, could you tell me how to deal with this problem about decreasing > performances of cache with multi nodes? > > > > If any idea could be shared with me, I highly appreciate it. > > > > Rick > > > > *From:* linr...@itri.org.tw [mailto:linr...@itri.org.tw] > *Sent:* Friday, April 13, 2018 3:23 PM > *To:* user@ignite.apache.org > *Subject:* RE: Slow Ignite Cache with multi-nodes > > > > Hi Roman, > > > > I think that my case is similar to this one: http://apache-ignite-users. > 70518.x6.nabble.com/Performance-with-increase-in-node-td9378.html > > (Performance with increase in node) > > > > From those discussions, I found the two tips to properly use cache in > ignite node. > > 1. Cache has to be warmed up. When the cache is used for the second or > third time, the speed of write is faster, as shown: > > 1-th experiment, Put 1 KV data: spend 6,431 milliseconds > > 2-th experiment, Put 1 KV data: spend 3,603 milliseconds > > 3-th experiment, Put 1 KV data: spend 3,961 milliseconds > > 2. With increasing server nodes, it is better to increase the number of > client nodes. > > > > Here, I do not know reasons about the above tips to accelerate cache. > > In addition, if the increased number of client nodes can improve > performance of cache, how to set the configures between client nodes? > > Because I do not know to set these, experiment results about the tip 2 are > not shown in here. > > > > In order to reproduce my situation, I provided my code to all. > > > > The configure in server node is: > > IgniteConfiguration cfg = new IgniteConfiguration(); > > cfg.setClientMode(false); //server > > TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder( > ); > > ipFinder.setMulticastGroup("224.1.2.4"); > > TcpDiscoverySpi spi = new TcpDiscoverySpi(); > > spi.setIpFinder(ipFinder); > > cfg.setDiscoverySpi(spi); > > > > The configures in two client nodes are: > > One client: > > TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder( > ); > > ipFinder.setMulticastGroup("224.1.2.4"); > > ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); > > TcpDiscoverySpi spi = new TcpDiscoverySpi(); > > spi.setIpFinder(ipFinder); > > cfg.setDiscoverySpi(spi); > > > > the other client to write data into cache[igniteCachePut]): > > TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder( > ); > > ipFinder.setMulticastGroup("224.1.2.4"); > > ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); > > TcpDiscoverySpi spi = new TcpDiscoverySpi(); > > spi.setIpFinder(ipFinder); > > cfg.setDiscoverySpi(spi); > > > > IgniteCache cacheKeyvalue = igniteNode.cache("igniteCachePut"); > > Int datasize =1; > > int expertime = 3; > > for (int j = 1; j <= expertime; j++) { > > long starttime, endtime; > > starttime = System.currentTimeMillis(); > > for (int i = 1; i <= datasize; i++) { > > cacheKeyvalue.put(Integer.toString(i), > Integer.toString(i)); > > } > > endtime = System.currentTimeMillis(); > > System.out.println(j+"-th experiment"); > > System.out.println("Put " + datasize + " KV data: spend " + > (endtime - starttime) + " milliseconds"); > > } > > > > If you have any idea about this problem, I am looking forward to hearing > from you. > > > > Thanks > > > > Rick > > > > -Original Message-
RE: Slow Ignite Cache with multi-nodes
Dear Sam and Nikolai, My case is similar to this one (Performance with increase in node) . So, could you tell me how to deal with this problem about decreasing performances of cache with multi nodes? If any idea could be shared with me, I highly appreciate it. Rick From: linr...@itri.org.tw [mailto:linr...@itri.org.tw] Sent: Friday, April 13, 2018 3:23 PM To: user@ignite.apache.org Subject: RE: Slow Ignite Cache with multi-nodes Hi Roman, I think that my case is similar to this one: http://apache-ignite-users.70518.x6.nabble.com/Performance-with-increase-in-node-td9378.html (Performance with increase in node) From those discussions, I found the two tips to properly use cache in ignite node. 1. Cache has to be warmed up. When the cache is used for the second or third time, the speed of write is faster, as shown: 1-th experiment, Put 1 KV data: spend 6,431 milliseconds 2-th experiment, Put 1 KV data: spend 3,603 milliseconds 3-th experiment, Put 1 KV data: spend 3,961 milliseconds 2. With increasing server nodes, it is better to increase the number of client nodes. Here, I do not know reasons about the above tips to accelerate cache. In addition, if the increased number of client nodes can improve performance of cache, how to set the configures between client nodes? Because I do not know to set these, experiment results about the tip 2 are not shown in here. In order to reproduce my situation, I provided my code to all. The configure in server node is: IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setClientMode(false); //server TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); The configures in two client nodes are: One client: TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); the other client to write data into cache[igniteCachePut]): TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); IgniteCache cacheKeyvalue = igniteNode.cache("igniteCachePut"); Int datasize =1; int expertime = 3; for (int j = 1; j <= expertime; j++) { long starttime, endtime; starttime = System.currentTimeMillis(); for (int i = 1; i <= datasize; i++) { cacheKeyvalue.put(Integer.toString(i), Integer.toString(i)); } endtime = System.currentTimeMillis(); System.out.println(j+"-th experiment"); System.out.println("Put " + datasize + " KV data: spend " + (endtime - starttime) + " milliseconds"); } If you have any idea about this problem, I am looking forward to hearing from you. Thanks Rick -Original Message- From: Roman Guseinov [mailto:ro...@gromtech.ru] Sent: Tuesday, April 10, 2018 1:56 PM To: user@ignite.apache.org<mailto:user@ignite.apache.org> Subject: Re: Slow Ignite Cache with multi-nodes Hi Rick, It seems that you need to increase clients number to achieve better performance when you increase server nodes number. You can try to put data from different threads as well. Also, you can set CacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.PRIMARY_SYNC). The default value is FULL_SYNC which means that client node will wait for write or commit to complete on all participating remote nodes (primary and backup) [1]. Performance Tips can be found here [2]. Best Regards, Roman [1] https://apacheignite.readme.io/v1.1/docs/primary-and-backup-copies#section-synchronous-and-asynchronous-backups [2] https://apacheignite.readme.io/docs/performance-tips -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/ -- 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain confidential information. Please do not use or disclose it in any way and delete it if you are not the intended recipient. -- 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain confidential information. Please do not use or disclose it in any way and delete it if you are not the intended recipient.
RE: Slow Ignite Cache with multi-nodes
Hi Roman, I think that my case is similar to this one: http://apache-ignite-users.70518.x6.nabble.com/Performance-with-increase-in-node-td9378.html (Performance with increase in node) From those discussions, I found the two tips to properly use cache in ignite node. 1. Cache has to be warmed up. When the cache is used for the second or third time, the speed of write is faster, as shown: 1-th experiment, Put 1 KV data: spend 6,431 milliseconds 2-th experiment, Put 1 KV data: spend 3,603 milliseconds 3-th experiment, Put 1 KV data: spend 3,961 milliseconds 2. With increasing server nodes, it is better to increase the number of client nodes. Here, I do not know reasons about the above tips to accelerate cache. In addition, if the increased number of client nodes can improve performance of cache, how to set the configures between client nodes? Because I do not know to set these, experiment results about the tip 2 are not shown in here. In order to reproduce my situation, I provided my code to all. The configure in server node is: IgniteConfiguration cfg = new IgniteConfiguration(); cfg.setClientMode(false); //server TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); The configures in two client nodes are: One client: TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); the other client to write data into cache[igniteCachePut]): TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder(); ipFinder.setMulticastGroup("224.1.2.4"); ipFinder.setAddresses(Arrays.asList("ubuntu7","ubuntu9")); TcpDiscoverySpi spi = new TcpDiscoverySpi(); spi.setIpFinder(ipFinder); cfg.setDiscoverySpi(spi); IgniteCache cacheKeyvalue = igniteNode.cache("igniteCachePut"); Int datasize =1; int expertime = 3; for (int j = 1; j <= expertime; j++) { long starttime, endtime; starttime = System.currentTimeMillis(); for (int i = 1; i <= datasize; i++) { cacheKeyvalue.put(Integer.toString(i), Integer.toString(i)); } endtime = System.currentTimeMillis(); System.out.println(j+"-th experiment"); System.out.println("Put " + datasize + " KV data: spend " + (endtime - starttime) + " milliseconds"); } If you have any idea about this problem, I am looking forward to hearing from you. Thanks Rick -Original Message----- From: Roman Guseinov [mailto:ro...@gromtech.ru] Sent: Tuesday, April 10, 2018 1:56 PM To: user@ignite.apache.org Subject: Re: Slow Ignite Cache with multi-nodes Hi Rick, It seems that you need to increase clients number to achieve better performance when you increase server nodes number. You can try to put data from different threads as well. Also, you can set CacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.PRIMARY_SYNC). The default value is FULL_SYNC which means that client node will wait for write or commit to complete on all participating remote nodes (primary and backup) [1]. Performance Tips can be found here [2]. Best Regards, Roman [1] https://apacheignite.readme.io/v1.1/docs/primary-and-backup-copies#section-synchronous-and-asynchronous-backups [2] https://apacheignite.readme.io/docs/performance-tips -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/ -- 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain confidential information. Please do not use or disclose it in any way and delete it if you are not the intended recipient.
Re: Slow Ignite Cache with multi-nodes
Hi Rick, It seems that you need to increase clients number to achieve better performance when you increase server nodes number. You can try to put data from different threads as well. Also, you can set CacheConfiguration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.PRIMARY_SYNC). The default value is FULL_SYNC which means that client node will wait for write or commit to complete on all participating remote nodes (primary and backup) [1]. Performance Tips can be found here [2]. Best Regards, Roman [1] https://apacheignite.readme.io/v1.1/docs/primary-and-backup-copies#section-synchronous-and-asynchronous-backups [2] https://apacheignite.readme.io/docs/performance-tips -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/