linux安装netty服务器,java – Linux机器上Netty 4.1的性能调优

我正在使用Netty 4.1 Beta3构建一个消息传递应用程序来设计我的服务器,并且服务器理解MQTT协议.

这是我的MqttServer.java类,它设置Netty服务器并将其绑定到特定端口.

EventLoopGroup bossPool=new NioEventLoopGroup();

EventLoopGroup workerPool=new NioEventLoopGroup();

try {

ServerBootstrap boot=new ServerBootstrap();

boot.group(bossPool,workerPool);

boot.channel(NioServerSocketChannel.class);

boot.childHandler(new MqttProxyChannel());

boot.bind(port).sync().channel().closeFuture().sync();

} catch (Exception e) {

e.printStackTrace();

}finally {

workerPool.shutdownGracefully();

bossPool.shutdownGracefully();

}

}

现在,我在Mac上对我的应用程序进行了负载测试,具有以下配置

网络性能非常出色.在执行我的代码时我查看了jstack,发现netty NIO产生了大约19个线程,并且它们似乎都没有等待等待通道或其他东西.

然后我在linux机器上执行了我的代码

这是一款2核15GB机器.问题是我的MQTT客户端发送的数据包似乎需要很长时间才能通过netty管道,并且在获取jstack时我发现有5个netty线程,所有这些都被困在这个

."nioEventLoopGroup-3-4" #112 prio=10 os_prio=0 tid=0x00007fb774008800 nid=0x2a0e runnable [0x00007fb768fec000]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:79)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)

- locked <0x00000006d0fdc898> (a

io.netty.channel.nio.SelectedSelectionKeySet)

- locked <0x00000006d100ae90> (a java.util.Collections$UnmodifiableSet)

- locked <0x00000006d0fdc7f0> (a sun.nio.ch.EPollSelectorImpl)

at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)

at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:621)

at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:309)

at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:834)

at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)

at java.lang.Thread.run(Thread.java:745)

这是一些与linux机器上的epoll相关的性能问题.如果是,则应对netty配置进行哪些更改以处理此问题或提高性能.

编辑

本地系统上的Java版本是: –

java版“1.8.0_40”

Java(TM)SE运行时环境(版本1.8.0_40-b27)

Java HotSpot(TM)64位服务器VM(内置25.40-b25,混合模式)

AWS上的Java版本是: –

openjdk版“1.8.0_40-internal”

OpenJDK运行时环境(build 1.8.0_40-internal-b09)

OpenJDK 64位服务器VM(内置25.40-b13,混合模式)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值