From 0413850fce0cd55657ff5ac806472f3d13011631 Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Tue, 26 Dec 2023 12:44:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=BC=93=E5=AD=98=E5=87=8F?= =?UTF-8?q?=E5=AE=B9=E4=BF=AE=E6=94=B9=E4=B8=BA=E6=AF=8F=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/chat/logic/ChatLogic.java | 2 +- .../ljsd/jieling/network/server/SessionManager.java | 7 ++----- .../java/com/ljsd/jieling/thread/ThreadManager.java | 3 +++ .../com/ljsd/jieling/thread/task/MinuteTask.java | 12 ++++++------ .../java/com/ljsd/jieling/util/DynamicLRUCache.java | 11 +++++------ 5 files changed, 17 insertions(+), 18 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java index 05c2a2bfe..e709efaae 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java @@ -86,7 +86,7 @@ public class ChatLogic { chatInfoList.add(CBean2Proto.getChatInfoBuilder(user, message,time,0)); } } - if (hmget!= null && hmget.size() != 0){ + if (hmget!= null && !hmget.isEmpty()){ //取出数据好友聊天数据后删除 RedisUtil.getInstence().del(GameApplication.serverId + RedisKey.CUser_Chat + uid); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java index d40cc86fb..ec81c4d06 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/SessionManager.java @@ -295,19 +295,16 @@ public class SessionManager implements INetSession, INetReceived= index) { byte[] message = iSession.getCacheMessage(index); if (message == null) { //TODO error - LOGGER.info("the uid={},the msg={} is processing,the index={},the sessionIndex={}", iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId()), index, iSession.getIndex()); + LOGGER.error("the uid={},the msg={} is processing,the index={},the sessionIndex={}", iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId()), index, iSession.getIndex()); return 1; } else { - LOGGER.info("the uid={},the msg={} reback", iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId())); + LOGGER.error("the uid={},the msg={} reback", iSession.getUid(), MessageTypeProto.MessageType.valueOf(packetNetData.getMsgId())); iSession.writeAndFlush(message); return 1; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java index 47c8c24dd..03f7c070c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/ThreadManager.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.thread; import com.ljsd.IManager; +import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.thread.task.*; import com.ljsd.jieling.util.ConfigurableApplicationContextManager; import org.slf4j.Logger; @@ -118,6 +119,8 @@ public class ThreadManager implements IManager { scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(new SecondsTask(), delayForMinute + 10, 1, TimeUnit.SECONDS)); // 战力任务 scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(new ForceRankTask(), 60,5, TimeUnit.SECONDS)); + // 每小时减容用户缓存 + scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(UserManager::adjustCacheBasedOnCurrentLoad, 10, 60, TimeUnit.MINUTES)); // 定时重启线程池 scheduledFutureSets.add(scheduledExecutor.scheduleAtFixedRate(new Thread(() -> { long lastMilis = System.currentTimeMillis(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index 885c27fb0..ae4ca38fe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -170,12 +170,12 @@ public class MinuteTask extends Thread { LOGGER.error("Exception::=>{}", e.toString()); } - try { - OnlineUserManager.checkOnline(); - } catch (Exception e) { - e.printStackTrace(); - LOGGER.error("Exception::=>{}", e.toString()); - } +// try { +// OnlineUserManager.checkOnline(); +// } catch (Exception e) { +// e.printStackTrace(); +// LOGGER.error("Exception::=>{}", e.toString()); +// } try { CrossRankManager.getInstance().crossRankHandle(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/DynamicLRUCache.java b/serverlogic/src/main/java/com/ljsd/jieling/util/DynamicLRUCache.java index 078ed0a98..9c103f58c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/DynamicLRUCache.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/DynamicLRUCache.java @@ -3,10 +3,7 @@ package com.ljsd.jieling.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -99,16 +96,18 @@ public class DynamicLRUCache { public void shrinkToFit() { lock.writeLock().lock(); try { - if (cache.size() < maxSize / 2) { + // 减少缓存大小调整的频率 + if (cache.size() < maxSize / 2 && maxSize > 100) { maxSize /= 2; // 缩小缓存容量 } cache.entrySet().removeIf(entry -> isEntryExpired(entry.getValue())); } finally { lock.writeLock().unlock(); } - LOGGER.info("当前用户缓存列表大小,num:{},max:{}",size(),maxSize); + LOGGER.info("当前用户缓存列表大小,num:{},max:{}", size(), maxSize); } + private boolean isEntryExpired(TimedCacheEntry entry) { return System.currentTimeMillis() - entry.timestamp > expireTime; }