测试订阅时候大量的shutdown,tcp_closed,是什么原因

环境信息

  • EMQ X 版本:4.3.3
  • 操作系统及版本:centos7.5
  • 其他

问题描述

使用命令 emqtt_bench sub -t t -h 192.168.10.82 -c 10000,出现大量的EXIT for {shutdown,tcp_closed}
之前都是好的,不知道是不是我改了什么配置导致的,为何呢?现在怎么改都不行,/var/lib/emqx/mnesia/*也删过了。
这是要重装吗?

root@panda-l-wulian-mqtt ~/emqtt-bench-master# ./emqtt_bench sub -t t -h 192.168.10.82 -c 10000
client(19998): EXIT for {shutdown,tcp_closed}
client(19991): EXIT for {shutdown,tcp_closed}
connected: 19client(19992): EXIT for {shutdown,tcp_closed}
client(19996): EXIT for {shutdown,tcp_closed}
client(19994): EXIT for {shutdown,tcp_closed}
client(19995): EXIT for {shutdown,tcp_closed}
client(19993): EXIT for {shutdown,tcp_closed}
client(20000): EXIT for {shutdown,tcp_closed}
client(19999): EXIT for {shutdown,tcp_closed}

配置文件及日志

emqx console 直接输出日志:

2021-06-25T11:10:26.966972+08:00 [error] Process:          <0.5048.0> on node 'emqx@127.0.0.1', Context:          maximum heap size reached, Max Heap Size:    8388608, Total Heap Size:  8396227, Kill:             false, Error Logger:     true, GC Info:          [{old_heap_block_size,2487399},{heap_block_size,5654686},{mbuf_size,254142},{recent_size,170559},{stack_size,96},{old_heap_size,1080779},{heap_size,1765313},{bin_vheap_size,680832},{bin_vheap_block_size,673802},{bin_old_vheap_size,560352},{bin_old_vheap_block_size,514761}]

系统调优 | EMQ Docs 可以参考系统方面的调优。

新的错误日志:

[error] Supervisor: {<0.1869.0>,esockd_acceptor_sup}. Context: shutdown_error. Reason: noproc. Offender: id=acceptor,nb_children=1

通过控制台启动,看看是不是哪里有报错呢。esockd应该没有正常启动起来

已经按官网的生产环境优化教程 优化 到不能再优化了,再细一点的参数,我也看不懂,不敢乱调。
一测就挂,不知道为何。日志提示什么意思?CPU不够?
重装,也是一样

重装,启动就报错,还是并发量增加了就才会出现呢?启动后看一下cpu使用资源,内存使用情况。top 命令看一下服务器情况

初步判断,是CPU,从8核心加到16核心,也是高占用

你现在的量有多大呢,同时硬件配置如何

现在已经加到了32核心的CPU(虚拟机),内存一直是16G。

问题:
订阅时候./emqtt_bench sub -t test -h 192.168.10.82 -c 1000
还总提示client(1008): EXIT for {shutdown,tcp_closed}

服务端日志:
2021-06-25T16:02:00.807618+08:00 [warning] wulian-mqtt_bench_sub_1001_55873792@192.168.10.69:64065 [MQTT] socket_error: busy

看看进程哪个消耗CPU比较大


beam.smp

并发量增加才会出现。

我看你是复用服务器的吧。你有多少个连接数据,数据流怎么的,还有引擎规则看一下,你这种方式压测没实际意义。你如果停了emq,资源消耗如何

复用服务器 是什么意思?停了emqx,资源一切恢复平静。

你的句柄值最大是多少?你连接数是多少?

ulimit -n
1000000

连接数才1000个

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
CLOSE_WAIT 1
ESTABLISHED 1046
TIME_WAIT 38

甚至500个也会报client(15764): EXIT for {shutdown,tcp_closed},
client(15764): EXIT for {shutdown,tcp_closed} 这种提示 是正确的吗?

你是单独一台服务器进行压的,还是和服务器一起跑的。你的内存多大?

现在反馈的是” 单台client" 和 "单台server"的测试,先测一下单台的。内存是16G,cpu是32核心。
跟client主机性能是不是也有关系呀?我刚看了下client监控,CPU已经达到了95%使用率。内网网速是1000Mbps

感觉跟之前遇到一个问题,同时10000连接创建,对cpu很吃紧。同时创建连接数过大就不停创建失败占用CPU就爆满。你可以多开几个进行测试,但是不要同时太多去一起去创建连接,先排除同样的可能性,如果不是这个问题的话,再看看查