我遇到问题Bootstrap.connect
占用了我的应用程序的大量CPU能力。我目前正在使用64线程的线程池(主要用于阻止DNS解析)每隔10秒向Netty发送300次连接尝试。该程序的目的是查询我的网站Minestatus上列出的Minecraft服务器。
每次调度这些连接时,CPU使用率都会达到100%。我附上了JMX连接采样CPU使用情况的屏幕截图。知道发生了什么事吗?
以下是我的调度代码:
private void dispatch(EventLoopGroup workerGroup, final MinecraftServer server) {
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(workerGroup).channel(NioSocketChannel.class);
bootstrap.handler(new UpdaterPipelineInitializer(timeout));
bootstrap.attr(MinecraftServer.SERVER_KEY, server);
bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, timeout);
bootstrap.connect(server.getAddress(), server.getPort()).addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) throws Exception {
server.incrementAttemptedConnections();
if (future.isSuccess()) {
server.incrementSuccessfulConnections();
server.setOnline(true);
} else {
future.cause().printStackTrace();
server.setOnline(false);
MinestatusUpdater.getDatabaseHandler().saveServer(server);
}
}
});
}