com.hazelcast.nio.tcp.handlermigration
Class IOBalancer
java.lang.Object
com.hazelcast.nio.tcp.handlermigration.IOBalancer
public class IOBalancer
- extends Object
It attempts to detect and fix a selector imbalance problem.
By default Hazelcast uses 3 threads to read data from TCP connections and 3 threads to write data to connections.
We have measured significant fluctuations of performance when the threads are not utilized equally.
com.hazelcast.nio.tcp.handlermigration.HandlerBalancer
tries to detect such situations and fix
them by moving ReadHandler
and WriteHandler
between
threads.
It measures number of events serviced by each handler in a given interval and if imbalance is detected then it
schedules handler migration to fix the situation. The exact migration strategy can be customized via
MigrationStrategy
.
Measuring interval can be customized via GroupProperties.IO_BALANCER_INTERVAL_SECONDS
It doesn't leverage ConnectionListener
capability
provided by ConnectionManager
to observe connections as it has to be notified
right after a physical TCP connection is created whilst ConnectionListener
is notified only
after a successful (Hazelcast) binding process.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
IOBalancer
public IOBalancer(InSelectorImpl[] inSelectors,
OutSelectorImpl[] outSelectors,
HazelcastThreadGroup threadGroup,
int migrationIntervalSeconds,
LoggingService loggingService)
connectionAdded
public void connectionAdded(Connection connection)
connectionRemoved
public void connectionRemoved(Connection connection)
stop
public void stop()
start
public void start()
Copyright © 2015 Hazelcast, Inc.. All Rights Reserved.