jmeter压测4U96核 128G服务器 测试结果很难看

山居剩活 发布于 08/13 15:19
阅读 651
收藏 1

jmeter压测4U96核 128G服务器 测试结果很难看,不知道是什么原因,这个结果比SSD笔记本都还差,求大佬给思路如何验证 这么差的原因是什么。

系统环境 

    Windows server 2012 R2 DataCenter x64

  • TcpNumConnections = 1090584575(Decimal)
  • MaxUserPort = 65534 (Decimal)
  • MaxHashTableSize = 65536 (Decimal)
  • MaxFreeTcbs = 16000 (Decimal)

硬件配置

    CPU: Xeon(R) E7-8890 v4

    4U96核 128G 物理服务器非虚拟机

JDK版本

    1.8

被测试应用

    springboot 2.1.2.RELEASE 

测试url

    返回hello world 不做其他任何处理

web容器

    undertow

server:
  port: 9081
  # 下面是配置undertow作为服务器的参数
  undertow:
    # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
    io-threads: 32
    # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
    worker-threads: 512
    # 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
    # 每块buffer的空间大小,越小的空间被利用越充分
    buffer-size: 1024
    # 是否分配的直接内存
    direct-buffers: true

应用JVM配置

-Xmx8g -Xms8g -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:+HeapDumpOnOutOfMemoryError

jmeter测试参数

    模拟用户1000

    持续300秒

测试结果

同网段局域网

1、被测试服务器101 跑应用,服务器96跑jmeter

2、被测试服务器101 跑应用,服务器101跑jmeter

测试结果差不多,这里截图是方式2

 

加载中
0
山居剩活
山居剩活

网络测试

 

磁盘IO测试

0
120011676
120011676

给你机器我用用,去研究研究呢?

山居剩活
山居剩活
内网,给不了。
0
JavaGG
JavaGG

为什么网络利用率这么低?

山居剩活
山居剩活
我也不知道,不过可能是截图瞬间的原因吧,最高的时候我看接收12MB,发送700KB
0
JavaGG
JavaGG

应该是你客户端和服务器的网络问题,你试试拿个1000M的交换机,把他们直连,再测试下

山居剩活
山居剩活
网络我用iperf测试了看起来挺稳定的。而且我不从96去压101,直接在101上压101 也这样。
0
IdleMan
IdleMan

我猜测是并发没上去,理由如下:

网络带宽没起来;
笔记本的单核处理能力高于服务器的单核处理能力,所以笔记本的表现好于服务器。

 

山居剩活
山居剩活
回复 @IdleMan : 怀疑是网络有问题,我就放一台服务器试试,结果也压不上去。2种方式都试过了,96压101,101 压101
IdleMan
IdleMan
回复 @山居剩活 : 为啥你要jmeter和应用在一台服务器,这样消耗的端口时双倍的
山居剩活
山居剩活
并发请求应该是起来了,但是并发的处理感觉没跟上,因为Jmeter报告里显示 失败的原因就2个,一个是端口耗尽,一个是连接超时,给我感觉就是服务器的多核在围观没跑起来。
0
boystudio
boystudio

瓶颈应该在发送端,创建一个TCP连接会占用一个端口,一个IP的端口是有限的,就小于65535个,所以并发瓶颈应该是来自于你的发送机器端口数量吧,而不是服务器。我是见有一些并发发送要么用集群,比如多台docker里面执行,或者分配多个IP网卡等等突破端口瓶颈。

山居剩活
山居剩活
端口可以这么解释,我换jmeter集群试试,但是连接超时,我始终感觉是 服务端处理跟不上导致超时的。
0
前端大师傅
前端大师傅

硬件环境太差了,测试数据反应了不真实情况。

山居剩活
山居剩活
好吧,那我也不知道啥硬件才算好了
0
x
xchh

查看下服务器96 的 tcp参数配置,TcpTimedWaitDelay(TcpTimedWaitDelay的值表示系统释放已关闭的TCP连接并复用其资源之前,必须等待的时间) 的值默认是240秒, 想单机测试高吞吐,这个值要调低,调到5秒10秒试试

山居剩活
山居剩活
改成5秒依旧。 TcpNumConnections = 1090584575(Decimal) MaxUserPort = 65534 (Decimal) MaxHashTableSize = 65536 (Decimal) MaxFreeTcbs = 16000 (Decimal) TcpTimedWaitDelay = 5 (Decimal)
山居剩活
山居剩活
jmeter用的长连接,会复用现在是30秒
0
JavaGG
JavaGG

ulimit -a  openfile改了没有?

山居剩活
山居剩活
回复 @JavaGG : 能改就不纠结了,客户非得用windows 因为他们每人会linux
JavaGG
JavaGG
回复 @山居剩活 : 改linux吧
山居剩活
山居剩活
windows 2012 ,不是linux,没这个参数。只有注册表的TCP最大连接数那几个参数
0
biny16
biny16

错误率很高啊,有可能是端口复用的问题导致压不上去

山居剩活
山居剩活
错误原因就2个端口耗尽和超时,不知道为什么会产生,因为压测的时候我同时在96ping101,结果也正常<1ms,浏览器打开压测的URL 也能打开。
返回顶部
顶部