From c521ce159fd2f49d716a0415dbd04c6953c3233b Mon Sep 17 00:00:00 2001 From: godotg Date: Sat, 25 Mar 2023 16:32:28 +0800 Subject: [PATCH] perf[session]: use high-performance segment locks to store session maps --- net/src/main/java/com/zfoo/net/session/SessionManager.java | 4 ++-- .../java/com/zfoo/protocol/collection/ConcurrentTest.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/net/src/main/java/com/zfoo/net/session/SessionManager.java b/net/src/main/java/com/zfoo/net/session/SessionManager.java index 328d4cd7..e05c1519 100644 --- a/net/src/main/java/com/zfoo/net/session/SessionManager.java +++ b/net/src/main/java/com/zfoo/net/session/SessionManager.java @@ -33,14 +33,14 @@ public class SessionManager implements ISessionManager { * 如:自己作为网关,那肯定有一大堆客户端连接,他们连接上来后,就会保存下来这些信息。 * 因此:要全局消息广播,其实要用这个Map */ - private final ConcurrentHashMapLongObject serverSessionMap = new ConcurrentHashMapLongObject<>(128); + private final ConcurrentHashMapLongObject serverSessionMap = new ConcurrentHashMapLongObject<>(64); /** * 作为客户端,连接别的服务器上后,保存下来的Session * 如:自己配置了Consumer,说明自己作为消费者将要消费远程接口,就会创建一个TcpClient去连接Provider,那么连接上后,就会保存下来到这个Map中 */ - private final ConcurrentHashMapLongObject clientSessionMap = new ConcurrentHashMapLongObject<>(); + private final ConcurrentHashMapLongObject clientSessionMap = new ConcurrentHashMapLongObject<>(8); private volatile int clientSessionChangeId = IdUtils.getLocalIntId(); diff --git a/protocol/src/test/java/com/zfoo/protocol/collection/ConcurrentTest.java b/protocol/src/test/java/com/zfoo/protocol/collection/ConcurrentTest.java index 78b8207b..205f6b81 100644 --- a/protocol/src/test/java/com/zfoo/protocol/collection/ConcurrentTest.java +++ b/protocol/src/test/java/com/zfoo/protocol/collection/ConcurrentTest.java @@ -76,6 +76,7 @@ public class ConcurrentTest { for (int j = 0; j < num; j++) { map.put(j, j); } + map.forEachPrimitive(it -> it.value()); countDownLatch.countDown(); } }).start(); @@ -91,6 +92,7 @@ public class ConcurrentTest { for (int j = 0; j < num; j++) { map.remove((long) j); } + map.forEachPrimitive(it -> it.value()); countDownLatch2.countDown(); } }).start();