Administrator 4 months ago
parent
commit
074741fd2a

+ 9 - 3
incubator-common/src/main/java/com/incubator/common/net/netty/server/NettyServer.java

@@ -175,10 +175,16 @@ public class NettyServer extends NettyServerFactory {
 	 * 获取默认的 Channel 类型
 	 */
 	private Class<? extends ServerChannel> getDefaultChannelClass() {
+		System.out.println("Epoll is supported:=====================================================> " + Epoll.isAvailable());
+		if (!Epoll.isAvailable()) {
+			System.out.println("Epoll unavailable cause: ===========================================>" + Epoll.unavailabilityCause());
+		}
+
+
 		String osName = System.getProperty("os.name").toLowerCase();
-//		if (osName.contains("linux")) {
-//			return EpollServerSocketChannel.class;
-//		}
+		if (osName.contains("linux")) {
+			return EpollServerSocketChannel.class;
+		}
 		return NioServerSocketChannel.class;
 	}
 	public static void main(String[] args) {

+ 32 - 13
incubator-common/src/main/java/com/incubator/common/net/netty/server/NettyServerConfig.java

@@ -32,14 +32,41 @@ public class NettyServerConfig {
 
 	public NettyServerConfig() {
 		this(getDefaultChannelClass(),
-				new NioEventLoopGroup(DEFAULT_BOSS_THREADS, new NamedThreadFactory("Server-boss", true)),
-				new NioEventLoopGroup(DEFAULT_IO_THREADS, new NamedThreadFactory("Server-ioWorkers", true)));
+				getDefaultBossGroup(),
+				getDefaultIoWorkersGroup());
 	}
 
+
+	private static Class<? extends ServerChannel> getDefaultChannelClass() {
+		if (isLinuxPlatform()) {
+			return EpollServerSocketChannel.class;
+		}
+		return NioServerSocketChannel.class;
+	}
+
+	private static EventLoopGroup getDefaultBossGroup() {
+		return isLinuxPlatform() ? new io.netty.channel.epoll.EpollEventLoopGroup(DEFAULT_BOSS_THREADS, new NamedThreadFactory("Server-boss", true))
+				: new NioEventLoopGroup(DEFAULT_BOSS_THREADS, new NamedThreadFactory("Server-boss", true));
+	}
+
+	private static EventLoopGroup getDefaultIoWorkersGroup() {
+		return isLinuxPlatform() ? new io.netty.channel.epoll.EpollEventLoopGroup(DEFAULT_IO_THREADS, new NamedThreadFactory("Server-ioWorkers", true))
+				: new NioEventLoopGroup(DEFAULT_IO_THREADS, new NamedThreadFactory("Server-ioWorkers", true));
+	}
+
+	private static EventLoopGroup getDefaultBossGroup(int bossThreads) {
+		return isLinuxPlatform() ? new io.netty.channel.epoll.EpollEventLoopGroup(bossThreads, new NamedThreadFactory("Server-boss", true))
+				: new NioEventLoopGroup(bossThreads, new NamedThreadFactory("Server-boss", true));
+	}
+
+	private static EventLoopGroup getDefaultIoWorkersGroup(int ioThreads) {
+		return isLinuxPlatform() ? new io.netty.channel.epoll.EpollEventLoopGroup(ioThreads, new NamedThreadFactory("Server-ioWorkers", true))
+				: new NioEventLoopGroup(ioThreads, new NamedThreadFactory("Server-ioWorkers", true));
+	}
 	public NettyServerConfig(int bossThreads, int ioThreads) {
 		this(getDefaultChannelClass(),
-				new NioEventLoopGroup(bossThreads, new NamedThreadFactory("Server-boss", true)),
-				new NioEventLoopGroup(ioThreads, new NamedThreadFactory("Server-ioWorkers", true)));
+				getDefaultBossGroup(bossThreads),
+				getDefaultIoWorkersGroup(ioThreads));
 	}
 
 	public Class<? extends ServerChannel> getChannelClass() {
@@ -54,15 +81,7 @@ public class NettyServerConfig {
 		return ioWorkers;
 	}
 
-	/**
-	 * 获取默认的 Channel 类型,根据操作系统选择。
-	 */
-	private static Class<? extends ServerChannel> getDefaultChannelClass() {
-		if (isLinuxPlatform()) {
-			return EpollServerSocketChannel.class;
-		}
-		return NioServerSocketChannel.class;
-	}
+
 
 	/**
 	 * 判断是否为 Linux 平台。