小编Wor*_*orM的帖子

什么时候抛出"java.io.IOException:Connection reset by peer"?

ERROR GServerHandler  - java.io.IOException: Connection reset by peer
java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(Unknown Source)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
        at sun.nio.ch.IOUtil.read(Unknown Source)
        at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
        at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

该日志来自使用netty实现的游戏服务器.什么可以导致这个例外?

java tcp ioexception netty

49
推荐指数
2
解决办法
12万
查看次数

由于从boss线程传递给工作线程的请求导致的netty延迟?

我有一些关于Netty(服务器端),TCP/IP应用程序的问题;

我想知道在将请求从boss线程传递给工作线程时是否会因为netty(由于缺少配置等)而存在延迟?

我在用 :

new OrderedMemoryAwareThreadPoolExecutor(350, 0, 0, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

实际上,我设置了最大线程数,350因为我不确定最佳数量.我每分钟记录同时工作的线程数,似乎平均值太低(几乎超过10).所以我会减少这个数字,因为它不是必需的.

有没有其他参数,重要的一点,我应该知道,以获得最佳性能?

bootstrap.setOption("tcpNoDelay", true); - 设置此参数有什么缺点吗?考虑到交货时间非常重要.

线程池执行器:

OrderedMemoryAwareThreadPoolExecutor executor = new OrderedMemoryAwareThreadPoolExecutor(48, 0, 0, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

这是我的管道工厂:

    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());
Run Code Online (Sandbox Code Playgroud)

和ServerBootstrap:

gServerBootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()));
        gServerBootstrap.setPipelineFactory(new GServerPipelineFactory());
                gServerBootstrap.setOption("backlog", 8129);
                gServerBootstrap.setOption("child.tcpNoDelay", …
Run Code Online (Sandbox Code Playgroud)

java performance tcp tcplistener netty

4
推荐指数
1
解决办法
7982
查看次数

标签 统计

java ×2

netty ×2

tcp ×2

ioexception ×1

performance ×1

tcplistener ×1