下面列出了io.netty.channel.nio.NioEventLoopGroup#setIoRatio ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private ProxyServer(final Builder builder) {
_acceptorGroup =
new NioEventLoopGroup(2, new NamedThreadFactory("Client acceptor group"), SelectorProvider.provider());
_upstreamWorkerGroup =
new NioEventLoopGroup(8, new NamedThreadFactory("Client worker group"), SelectorProvider.provider());
_upstreamWorkerGroup.setIoRatio(80);
_downstreamWorkerGroup =
new NioEventLoopGroup(8, new NamedThreadFactory("Server worker group"), SelectorProvider.provider());
_downstreamWorkerGroup.setIoRatio(80);
_host = builder._host;
_port = builder._port;
_serverConnectionIdleTimeout = builder._serverChannelIdleTimeout;
_clientConnectionIdleTimeout = builder._clientChannelIdleTimeout;
_connectionFlowRegistry = builder._connectionFlowRegistry;
_proxyModeControllerFactory = builder._proxyModeControllerFactory;
}
public static EventLoopGroup newEventLoopGroup(int threads) {
if (useNativeIo && Epoll.isAvailable()) {
return new EpollEventLoopGroup(threads);
} else if (useNativeIo && KQueue.isAvailable()) {
return new KQueueEventLoopGroup(threads);
}
NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(threads);
eventLoopGroup.setIoRatio(ConfigManager.getInstance().getIoRatio());
return eventLoopGroup;
}
public ProxyThreadPools(SelectorProvider selectorProvider, int incomingAcceptorThreads, int incomingWorkerThreads, int outgoingWorkerThreads, String serverGroupName, int serverGroupId) {
clientToProxyAcceptorPool = new NioEventLoopGroup(incomingAcceptorThreads, new CategorizedThreadFactory(serverGroupName, "ClientToProxyAcceptor", serverGroupId), selectorProvider);
clientToProxyWorkerPool = new NioEventLoopGroup(incomingWorkerThreads, new CategorizedThreadFactory(serverGroupName, "ClientToProxyWorker", serverGroupId), selectorProvider);
clientToProxyWorkerPool.setIoRatio(90);
proxyToServerWorkerPool = new NioEventLoopGroup(outgoingWorkerThreads, new CategorizedThreadFactory(serverGroupName, "ProxyToServerWorker", serverGroupId), selectorProvider);
proxyToServerWorkerPool.setIoRatio(90);
}
protected EventLoopGroup newBossEventLoopGroup() {
EventLoopGroup boss;
if(enableEpoll){
EpollEventLoopGroup epollBoss = new EpollEventLoopGroup(1,new ThreadFactoryX("Epoll","Server-Boss"));
// epollBoss.setIoRatio(ioRatio);
boss = epollBoss;
}else {
NioEventLoopGroup jdkBoss = new NioEventLoopGroup(1,new ThreadFactoryX("NIO","Server-Boss"));
jdkBoss.setIoRatio(ioRatio);
boss = jdkBoss;
}
return boss;
}
protected EventLoopGroup newWorkerEventLoopGroup() {
EventLoopGroup worker;
if(enableEpoll){
EpollEventLoopGroup epollWorker = new EpollEventLoopGroup(ioThreadCount,new ThreadFactoryX("Epoll",namePre+"Client-Worker"));
// epollWorker.setIoRatio(ioRatio);
worker = epollWorker;
}else {
NioEventLoopGroup nioWorker = new NioEventLoopGroup(ioThreadCount,new ThreadFactoryX("NIO",namePre+"Client-Worker"));
nioWorker.setIoRatio(ioRatio);
worker = nioWorker;
}
return worker;
}
public static EventLoopGroup newEventLoopGroup(int threads) {
if (useNativeIo && Epoll.isAvailable()) {
return new EpollEventLoopGroup(threads);
} else if (useNativeIo && KQueue.isAvailable()) {
return new KQueueEventLoopGroup(threads);
}
NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(threads);
eventLoopGroup.setIoRatio(ConfigManager.getInstance().getIoRatio());
return eventLoopGroup;
}
private void createNioServer(Listener listener) {
NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup(
1, new DefaultThreadFactory(ThreadNames.T_GATEWAY_WORKER)
);
eventLoopGroup.setIoRatio(100);
createServer(listener, eventLoopGroup, () -> new NioDatagramChannel(IPv4));//默认是根据机器情况创建Channel,如果机器支持ipv6,则无法使用ipv4的地址加入组播
}
private void createNioClient(Listener listener) {
NioEventLoopGroup workerGroup = new NioEventLoopGroup(
getWorkThreadNum(), new DefaultThreadFactory(ThreadNames.T_TCP_CLIENT), getSelectorProvider()
);
workerGroup.setIoRatio(getIoRate());
createClient(listener, workerGroup, getChannelFactory());
}