diff --git a/pom.xml b/pom.xml
index 110a960..6682c35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,6 +29,7 @@
         <!-- Compiler settings properties -->
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
+        <netty.version>4.1.26.Final</netty.version>
     </properties>
 
     <modules>
@@ -79,7 +80,7 @@
             <dependency>
                 <groupId>io.netty</groupId>
                 <artifactId>netty-all</artifactId>
-                <version>4.1.26.Final</version>
+                <version>${netty.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.alibaba</groupId>
diff --git a/remoting-core/remoting-impl/pom.xml b/remoting-core/remoting-impl/pom.xml
index 4805004..23791d1 100644
--- a/remoting-core/remoting-impl/pom.xml
+++ b/remoting-core/remoting-impl/pom.xml
@@ -10,6 +10,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
+
     <artifactId>remoting-impl</artifactId>
 
     <properties>
@@ -29,9 +30,8 @@
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-transport-native-epoll</artifactId>
-            <version>4.1.26.Final</version>
-            <classifier>${os.detected.name}-${os.detected.arch}</classifier>
-            <scope>provided</scope>
+            <version>${netty.version}</version>
+            <classifier>linux-${os.detected.arch}</classifier>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
diff --git a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java b/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
index 8454616..e59f3fa 100644
--- a/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
+++ b/remoting-core/remoting-impl/src/main/java/org/apache/rocketmq/remoting/impl/command/RemotingCommandImpl.java
@@ -21,6 +21,7 @@
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.EqualsExclude;
 import org.apache.commons.lang3.builder.HashCodeBuilder;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringExclude;
@@ -29,6 +30,7 @@
 import org.apache.rocketmq.remoting.api.command.TrafficType;
 
 public class RemotingCommandImpl implements RemotingCommand {
+    @EqualsExclude
     public final static RequestIdGenerator REQUEST_ID_GENERATOR = RequestIdGenerator.inst;
 
     private short cmdCode;
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
index 14e8c21..b9d3ced 100644
--- a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
+++ b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/BaseTest.java
@@ -139,17 +139,18 @@
         return objectFuture;
     }
 
-    protected RemotingClientConfig clientConfig() {
+    protected static RemotingClientConfig clientConfig() {
         RemotingClientConfig clientConfig = new RemotingClientConfig();
         clientConfig.setRemotingShutdownQuietPeriodMillis(0);
         clientConfig.setRemotingShutdownTimeoutMillis(10);
         return clientConfig;
     }
 
-    protected RemotingServerConfig serverConfig() {
+    protected static RemotingServerConfig serverConfig() {
         RemotingServerConfig serverConfig = new RemotingServerConfig();
         serverConfig.setRemotingShutdownQuietPeriodMillis(0);
         serverConfig.setRemotingShutdownTimeoutMillis(10);
+        serverConfig.setTcpSoReuseAddress(true);
         return serverConfig;
     }
 
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
index 428ed18..df10264 100644
--- a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
+++ b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/EpollRemotingConnectionTest.java
@@ -59,24 +59,14 @@
 
     @BeforeClass
     public static void setUp() throws Exception {
-        RemotingClientConfig clientConfig = new RemotingClientConfig();
-        clientConfig.setRemotingShutdownQuietPeriodMillis(0);
-        clientConfig.setRemotingShutdownTimeoutMillis(10);
+        RemotingClientConfig clientConfig = clientConfig();
+        RemotingServerConfig serverConfig = serverConfig();
 
-        RemotingServerConfig serverConfig = new RemotingServerConfig();
-        serverConfig.setRemotingShutdownQuietPeriodMillis(0);
-        serverConfig.setRemotingShutdownTimeoutMillis(10);
+        RemotingClientConfig epollClientConfig = clientConfig();
 
-        RemotingClientConfig epollClientConfig = new RemotingClientConfig();
-        epollClientConfig.setClientNativeEpollEnable(true);
-        epollClientConfig.setRemotingShutdownQuietPeriodMillis(0);
-        epollClientConfig.setRemotingShutdownTimeoutMillis(10);
-
-        RemotingServerConfig epollServerConfig = new RemotingServerConfig();
+        RemotingServerConfig epollServerConfig = serverConfig();
         epollServerConfig.setServerNativeEpollEnable(true);
         epollServerConfig.setServerListenPort(9999);
-        epollServerConfig.setRemotingShutdownQuietPeriodMillis(0);
-        epollServerConfig.setRemotingShutdownTimeoutMillis(10);
 
         remotingClient = new NettyRemotingClient(clientConfig);
         remotingServer = new NettyRemotingServer(serverConfig);
diff --git a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
index 2ba88d8..d63ad6f 100644
--- a/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
+++ b/remoting-core/remoting-impl/src/test/java/org/apache/rocketmq/remoting/impl/netty/NettyRemotingConnectionTest.java
@@ -49,13 +49,9 @@
 
     @BeforeClass
     public static void setUp() throws Exception {
-        RemotingClientConfig clientConfig = new RemotingClientConfig();
-        clientConfig.setRemotingShutdownQuietPeriodMillis(0);
-        clientConfig.setRemotingShutdownTimeoutMillis(10);
+        RemotingClientConfig clientConfig = clientConfig();
 
-        RemotingServerConfig serverConfig = new RemotingServerConfig();
-        serverConfig.setRemotingShutdownQuietPeriodMillis(0);
-        serverConfig.setRemotingShutdownTimeoutMillis(10);
+        RemotingServerConfig serverConfig = serverConfig();
 
         remotingClient = new NettyRemotingClient(clientConfig);
         remotingServer = new NettyRemotingServer(serverConfig);
