diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index d4be96404..2b6839d56 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -52,6 +52,7 @@ import org.redkale.source.*; import org.redkale.source.spi.SourceModuleEngine; import org.redkale.util.AnyValue; import org.redkale.util.AnyValueWriter; +import org.redkale.util.ByteBufferPool; import org.redkale.util.Creator; import org.redkale.util.Environment; import org.redkale.util.Redkale; @@ -810,11 +811,12 @@ public final class Application { /** 设置WorkExecutor */ private void initWorkExecutor() { int bufferCapacity = 32 * 1024; - int bufferPoolSize = Utility.cpus() * 8; + int bufferPoolSize = ByteBufferPool.DEFAULT_BUFFER_POOL_SIZE; final AnyValue executorConf = config.getAnyValue("executor", true); StringBuilder executorLog = new StringBuilder(); - final int workThreads = Math.max(Utility.cpus(), executorConf.getIntValue("threads", Utility.cpus() * 10)); + int confThreads = executorConf.getIntValue("threads", WorkThread.DEFAULT_WORK_POOL_SIZE); + final int workThreads = Math.max(Utility.cpus(), confThreads); // 指定threads则不使用虚拟线程池 this.workExecutor = executorConf.getValue("threads") != null ? WorkThread.createExecutor(workThreads, "Redkale-WorkThread-%s") @@ -832,7 +834,7 @@ public final class Application { executorLog.append(", clientWorkExecutor: [workExecutor]"); } else { // 给所有client给一个新的默认ExecutorService - int clientThreads = executorConf.getIntValue("clients", Utility.cpus() * 4); + int clientThreads = executorConf.getIntValue("clients", WorkThread.DEFAULT_WORK_POOL_SIZE); clientWorkExecutor = WorkThread.createWorkExecutor(clientThreads, "Redkale-DefaultClient-WorkThread-%s"); executorLog.append(", threads=").append(clientThreads).append("}"); } diff --git a/src/main/java/org/redkale/net/Server.java b/src/main/java/org/redkale/net/Server.java index 35eb75163..4a3f38683 100644 --- a/src/main/java/org/redkale/net/Server.java +++ b/src/main/java/org/redkale/net/Server.java @@ -144,7 +144,7 @@ public abstract class Server< "UDP".equalsIgnoreCase(netprotocol) ? UDP_BUFFER_CAPACITY : 32 * 1024); this.bufferCapacity = "UDP".equalsIgnoreCase(netprotocol) ? bufCapacity : (bufCapacity < 1024 ? 1024 : bufCapacity); - this.bufferPoolSize = config.getIntValue("bufferPoolSize", Utility.cpus() * 8); + this.bufferPoolSize = config.getIntValue("bufferPoolSize", ByteBufferPool.DEFAULT_BUFFER_POOL_SIZE); this.responsePoolSize = config.getIntValue("responsePoolSize", 1024); this.name = config.getValue( "name", diff --git a/src/main/java/org/redkale/net/WorkThread.java b/src/main/java/org/redkale/net/WorkThread.java index f3608d7e1..94bd8c60e 100644 --- a/src/main/java/org/redkale/net/WorkThread.java +++ b/src/main/java/org/redkale/net/WorkThread.java @@ -19,7 +19,9 @@ import org.redkale.util.Utility; * @author zhangjx */ public class WorkThread extends Thread implements Executor { - + + public static final int DEFAULT_WORK_POOL_SIZE = Utility.cpus() * 8; + protected final ExecutorService workExecutor; // WorkThread下标,从0开始 diff --git a/src/main/java/org/redkale/net/http/WebSocketNode.java b/src/main/java/org/redkale/net/http/WebSocketNode.java index b3d87b209..932836ddb 100644 --- a/src/main/java/org/redkale/net/http/WebSocketNode.java +++ b/src/main/java/org/redkale/net/http/WebSocketNode.java @@ -18,6 +18,7 @@ import static org.redkale.boot.Application.RESNAME_APP_NODEID; import org.redkale.convert.*; import org.redkale.convert.json.JsonConvert; import org.redkale.mq.spi.MessageAgent; +import org.redkale.net.WorkThread; import static org.redkale.net.http.WebSocket.RETCODE_GROUP_EMPTY; import org.redkale.net.sncp.Sncp; import org.redkale.service.*; @@ -81,7 +82,7 @@ public abstract class WebSocketNode implements Service { if (localEngine != null) { int wsthreads = localEngine.wsThreads; if (wsthreads == 0) { - wsthreads = Utility.cpus() * 8; + wsthreads = WorkThread.DEFAULT_WORK_POOL_SIZE; } if (wsthreads > 0) { this.semaphore = new Semaphore(wsthreads); diff --git a/src/main/java/org/redkale/util/ByteBufferPool.java b/src/main/java/org/redkale/util/ByteBufferPool.java index e3a5d8625..35fb075b7 100644 --- a/src/main/java/org/redkale/util/ByteBufferPool.java +++ b/src/main/java/org/redkale/util/ByteBufferPool.java @@ -18,6 +18,10 @@ import java.util.concurrent.atomic.LongAdder; */ public class ByteBufferPool extends ObjectPool { + public static final int DEFAULT_BUFFER_POOL_SIZE = Utility.cpus() * 4; + + public static final int DEFAULT_BUFFER_CAPACITY = 16 * 1024; + private final int bufferCapacity; protected ByteBufferPool(