三、jmeter压测工具

1. 下载jmeter工具

http://jmeter.apache.org/

新建一个终端,输入:sudo vim /etc/hosts
在最后一行加上:114.116.100.251 miaoshaserver
pstree -p 5240 | wc -l 可以查看5240这个进程上有多少个线程
查看机器性能:top -H
查看某个进程内部线程占用情况:top -H -p 线程PID

2. 发现问题

通过jmeter压测工具,把线程组中的线程数设为5000个,循环100次,进行压测,发现开始报error了,并发的线程数上不去,只能服务四五十个线程,这是因为server端的线程开不出来了,导致整个的tps容量上不去,客户端被拒绝连接。

3. 原因

在springboot的配置中,有个spring-configuration-metadata.json文件
在这里插入图片描述
通过查看得知,默认内嵌的tomcat配置为:

  • server.tomcat.accept-count:等待队列长度,默认100

  • server.tomcat.max-connections:最大可被连接数,默认10000

  • server.tomcat.max-threads:最大工作线程数,默认200

  • server.tomcat.min-spare-threads:最小工作线程数,默认100

  • 默认配置下,连接超过10000后出现拒绝连接的情况

  • 默认配置下,并发请求超过200+100后拒绝处理

而jmeter压测时设置的是2000个并发请求,远远大于300,导致并发上不去

4. 解决tomcat默认配置的问题

  • cd /var/www/miaosha
  • vim application.properties
  • 加上:
server.tomcat.accept-count=1000
server.tomcat.max-threads=800
server.tomcat.min-spare-threads=100

对于四核8G服务器的最大线程数,配置800最佳

  • 重新启动项目:./deploy.sh &
  • ps -ef | grep java
  • pstree -p 449 | wc -l
  • 此时可以发现,线程数变为了470,相比之前的四十多个线程数稍微增长了些,初步调优完成。此时tps有200多,依然达不到要求。

5. keeplive

现在越来越多的移动端设备和一些很复杂的网页交互需要在用户浏览时频繁的向服务端发送请求,因此需要建立一个keeplive的链接,这样就不需要每次都新建连接、断开连接。

通过压力测试,对于4核cpu 8G内存的单进程,将线程数设置在800左右是比较好的,设置再多的话会花费很多时间在cpu的调度上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值