Netty - 并发客户端连接数

时间:2015-05-22 01:18:26

标签: netty

我正在针对在Netty服务器上运行的应用程序(4.0.28.Final)运行测试

在OSX上

如果不设置以下代码,则不支持并发客户端(1024) 连接

option(ChannelOption.SO_BACKLOG, 2048)

在此设置之后,我可以创建1000个并发客户端连接。

Q1将ulimit设置为2048并将somaxcon设置为2048无效,为什么?

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 10000
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

    $ sysctl -a | grep files
    kern.maxfiles = 10000
    kern.maxfilesperproc = 10000
    kern.maxfiles: 10000
    kern.maxfilesperproc: 10000
    kern.num_files: 2098

    $ sysctl -a | grep somax
    kern.ipc.somaxconn: 2048

Reference: http://stackoverflow.com/questions/5377450/maximum-number-of-open-filehandles-per-process-on-osx-and-how-to-increase

端口上的netstat为我提供了正确的连接数(1024),但lsof给出了更小的值(175)。

On Centos

以下设置适用于大型客户端连接

option(ChannelOption.SO_BACKLOG, 128)

os level
Ulimit = 65336
# sysctl -a | grep somax
net.core.somaxconn = 128

Q3我可以连接多个客户端。为什么/如何?注意:除ulimit之外的所有值都很高。

Q4设置backlog有什么作用?为什么在OSX上需要它并且对CentOS没有影响?

我的OSX上的Q4 Netty记录了此消息

23:17:09.060 [main] DEBUG io.netty.util.NetUtil - /proc/sys/net/core/somaxconn: 128 (non-existent)

我创建了/ proc / sys / net / core / somaxconn。日志开始显示新值,但它对并发线程数没有影响。

1 个答案:

答案 0 :(得分:0)

抱歉所有的困惑。

echo limit maxfiles 10000 10000 | sudo tee -a /etc/launchd.conf,如另一个为我工作的线程所示。

lsof现在显示预期的计数,它适用于积压的128:)