У меня есть несколько вопросов о Netty (на стороне сервера), приложениях TCP / IP;
Мне интересно, может ли быть задержка из-за netty (из-за отсутствующей конфигурации и т. Д.) При передаче запроса из потока босса в рабочий поток?
Я использую:
new OrderedMemoryAwareThreadPoolExecutor(350, 0, 0, 1, TimeUnit.SECONDS);
На самом деле я установил максимальное число потоков 350
, так как не уверен насчет оптимального числа. Я регистрирую количество одновременных рабочих потоков каждую минуту, и кажется, что среднее значение слишком низкое (едва превышает 10
). Поэтому я уменьшу это число, так как оно не требуется.
Есть ли другие параметры, важные моменты, о которых я должен знать, чтобы добиться максимальной производительности?
bootstrap.setOption("tcpNoDelay", true);
- Есть ли недостатки в настройке этого параметра? Учитывая, что время доставки очень важно.
Исполнитель пула потоков:
OrderedMemoryAwareThreadPoolExecutor executor = new OrderedMemoryAwareThreadPoolExecutor(48, 0, 0, 1, TimeUnit.SECONDS);
Вот мой трубопроводный завод:
ChannelPipeline pipeline = pipeline();
pipeline.addLast("frameDecoder", new DelimiterBasedFrameDecoder(GProperties.getIntProperty("decoder.maxFrameLength", 8000 * 1024), Delimiters.nulDelimiter()));
pipeline.addLast("stringDecoder", new StringDecoder( CharsetUtil.UTF_8 ));
pipeline.addLast("frameEncoder", new NullTermMessageEncoder());
pipeline.addLast("stringEncoder", new JSONEncoder( CharsetUtil.UTF_8 ));
pipeline.addLast("timeout", new IdleStateHandler(idleTimer, 42 , 0, 0));
pipeline.addLast("executor", new ExecutionHandler(executor));
pipeline.addLast("handler", new GServerHandler());
и ServerBootstrap:
gServerBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
gServerBootstrap.setPipelineFactory(new GServerPipelineFactory());
gServerBootstrap.setOption("backlog", 8129);
gServerBootstrap.setOption("child.tcpNoDelay", true);
gServerBootstrap.bind(new InetSocketAddress(GProperties.getIntProperty("server.port", 7679)));
Что вы можете предложить для этой конфигурации?