After you determine the maximum transmission rate, configure and tune your production system.
For best performance, the producer and the consumers should run on different machines and each process should have at least one CPU dedicated to it. The following is a list of configuration changes that can improve multicast performance. Check with your system administrator about changing any of the limits discussed here.
Distribution statistics for stack time probes are deactivated by default to increase multicast performance. To reduce multicast speed, you can enable time statistics by setting the gemfire.enable-time-statistics
property to true.
This enables time statistics for a Java application:
-Dgemfire.enable-time-statistics=true
The time statistics properties are passed to the cache server on the gfsh
the command line:
gfsh>start server --name=server_name --enable-time-statistics=true
Monitor the members that receive data for signs of data loss. A few data loss messages can happen normally during region creation. Data loss monitoring can be done by reviewing the GemFire DistributionStats in the statistics archive using the optional Visual Statistics Display (VSD) tool. If the cache regions are configured to require acknowledgment, you could see messages timing out as they wait for a response. After a put into a region, the next operations might report that the entry could not be found.
Multicast retransmit requests and unicast retransmits can also be monitored to detect data loss. Even when you see data loss, the cause of the problem may have nothing to do with the network. However, if it happens constantly then you should try testing the flow control rate again
If necessary, reconfigure all the gemfire.properties
files and repeat with lower flow control maximum credits until you find the maximum useful rate for your installation.
Reduce multicast latency by deactivating batching. By default, GemFire uses batching for operations when the region’s scope is distributed-no-ack. Set the disableBatching
property to true on the application or when starting a cache server process through the gfsh
command line:
gfsh>start server --name=server_name --J=-Dp2p.disableBatching=true