记一次压力测试
性能测试文档
- 背景
为对产品性能有一定了解,现将产品展开一次性能测试;
- 环境与工具
本章为基本工具准备及linux命令说明,无先后顺序。
- Xshell工具
- 本文使用Xshell在Windows界面下远程登录linux主机
- 安装Xshell直接全部选择默认选项即可(安装包见:发货包\辅助工具\)
- 新建会话,以主机为例
- 点击新建按钮
-
- 填写会话名称,linux主机ip地址
-
- 点击确定
-
- 双击新建立的会话
-
- 输入用户名
-
- 输入密码
-
- 成功登录
- winSCP工具
- 本文使用winSCP将Windows下的文件上传到Linux系统中
- 安装winSCP直接全部选择默认选项即可(安装包见:发货包\辅助工具\)
- 以普通用户登录只能向个人目录上传文件,以root用户登录可以向任意路径上传文件,建议管理员以root用户登陆。
- 新建会话,以主机为例
- 点击新建会话
- 选择新建站点,写入linux主机ip、用户名、密码,点击登录即可
- 如下所示,登陆成功
- 其中左侧为windows本地文件,右侧为linux系统文件
- 上传文件,拖动即可,下图为将windows E:\soft\test文件夹上传到linux系统/home/rs10user路径下
- Jemte工具
- 用例与脚本
系统登录
- 实验
- 脚本录制与制作
(156条消息) JMeter脚本录制-快速上手篇_jmeter录制_软件测试大叔的博客-CSDN博客
或使用手工添加
- Jmeter使用
正在上传…重新上传取消
点击1清理后,点击2执行;
- 测试与性能指标
- Tps
- 响应时间
- 错误率
- 相关策略与问题解决
- 改过 author 的feign 超时时间
- 删掉所有日志
- author与sys pod 比为2:5 4:12
- ClientAbortException: java.io.IOException: Broken pipe 解决
https://blog.csdn.net/Beyondpyj/article/details/115730750
- 查看物理机 连接数 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 增大druid连接数据,最小连接数3和最大连接数400,初始连接数50
- 增大数据库最大连接数为 500
- Nginx配置,超时
# backend server proxy
location /gateway/ {
proxy_pass http://192.168.168.205:30130/;
#proxy_set_header Host $http_host; ##转发后端口别忘了
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr; ##关键句
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect default;
---
proxy_connect_timeout 60000s; ##
proxy_send_timeout 180s;
proxy_read_timeout 180s;
proxy_buffer_size 1M;
proxy_buffers 8 1M;
proxy_busy_buffers_size 1M;
proxy_temp_file_write_size 1M;
}
- 代理商环境的一些配置
ip 作用 cpu memory
192.168.7.100 master 2 8
192.168.7.101 master
192.168.7.102 worker 4 16
192.168.7.103 worker
192.168.7.104 manager 4 24
- linux 查cpu 核数: cat /proc/ cpu info | grep "processor" | wc -l
- linux 查内存 free -m
- linux 查cpu内存 使用率 top
- 500账户查询
消除 oderby 后面的 dep_name
sys_acct_type 添加索引 act_type
sys2300,2400加入白名单
修改2300 2400 程序
- 因为数据库是Windows的机器,这次我们报告内就不体现资源占用情况了,这个问题您后期可以再去优化一下,我们这次测试主抓耗时和报错率。
- cat logs-from-business-sys-in-business-sys-7577b48fcb-b6gn6.txt |grep 'gridpanel total时间'|awk -F: '{print $4}'
- jemete 聚合报告参数含义
https://blog.csdn.net/m0_72875584/article/details/128883344
- plsql执行计划
https://www.cnblogs.com/kiamer2425/p/14968523.html
- 使用topic 命令查看容器中性能
- nginx中添加了 时间日志:
/etc # cat /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
- Windows机器tcp连接数增大
(152条消息) jmeter压力测试(踩坑)报错:java.net.BindException: Address already in use: connect_能白话的程序员♫的博客-CSDN博客
- Nginx里时长配置
实验是将mrp 默认使用nodePort 端口
正在上传…重新上传取消
正在上传…重新上传取消
- 服务器超时配置
import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
//设置超时时间
//当Spring容器中没有TomcatEmbeddedServletContainerFactory这个bean时,会把此bean加载进容器
@Component
public class WebServerConfiguration implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
//使用工厂类定制tomcat connector
((TomcatServletWebServerFactory) factory).addConnectorCustomizers(new TomcatConnectorCustomizer() {
@Override
public void customize(Connector connector) {
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
//设置15秒无响应则断开keepalive
protocol.setKeepAliveTimeout(1500000000);
//设置最大n次请求后则断开keepalive, -1表示无穷
protocol.setMaxKeepAliveRequests(-1);
}
});
}
}
正在上传…重新上传取消
正在上传…重新上传取消
- Oracle 连接最大5000
- Nginx最大请求书12000
server:
tomcat:
max-threads: 1000
accpt-count: 500
connection-timeout: 2000000000
servlet:
session:
timeout: 2000000000
- 最后实践中没有加 connecton-timeoute 和 session.timeout 也可以。需要再尝试 todo
- 1683784604409,101,查账户,Non HTTP response code: java.net.NoRouteToHostException,Non HTTP response message: Cannot assign requested address (Address not available),Thread Group 1-9377,text,false,,1995,0,9968,9968,http://192.168.168.205:30132/sys/sys0000/rsacct/get_c?companyCode=01&acctCode=ceshi59,0,0,0
(153条消息) jmeter java.net.NoRouteToHostException: Cannot assign requested address (Address not available)_jmeter noroutetohostexception_zhangzhen02的博客-CSDN博客
- 进一步增大sys的核数 到达8c2g
- 8c 2g 8pod
达到 正在上传…重新上传取消
正在上传…重新上传取消
- 报错 没有java_home . 使用命令 source /etc/profile ;
- Gateway*1 0.5c1.6G author*1 4c4g 100人并发,tps 113,时间0.895s,错误率0;
- Gateway*1 0.5c1.6G author*1 4c4g 200人并发,tps 108,时间1.824s,错误率0
- Gateway*1 0.5c1.6G author*2 4c4g 200人并发,tps 221,时间0.894s,错误率0
- Gateway*1 2 c2G author*3 28c8g 1000人并发,tps 291,时间2.834s,错误率0
- 记录author 服务消耗 CPU
正在上传…重新上传取消
- 附录
- jMeter 安装插件
(157条消息) 【JMeter】插件安装_jmeter插件安装_段小王爷的博客-CSDN博客
- jMeter常见错误
(154条消息) 记录jmeter使用时遇到的错误:Non HTTP response code: org.apache.http.NoHttpResponseException_uling94的博客-CSDN博客
- Jmeter 各个参数意义
Jmeter的Linux单机压测_AMEI_2015的博客-CSDN博客
(152条消息) JMeter聚合报告的参数含义__jone的博客-CSDN博客
jmeter -n -t xhsxportal.jmx -l result.jtl
Creating summariser <summary>
Created the tree successfully using xhsxportal.jmx
Starting the test @ Tue Dec 27 18:44:02 CST 2016 (1482835442042)
Waiting for possible shutdown message on port 4445
summary + 1 in 0.3s = 3.2/s Avg: 68 Min: 68 Max: 68 Err: 0 (0.00%) Active: 3 Started: 3 Finished: 0
summary + 479387 in 28s = 17377.9/s Avg: 0 Min: 0 Max: 68 Err: 0 (0.00%) Active: 10 Started: 10 Finished: 0
summary = 479388 in 28s = 17185.4/s Avg: 0 Min: 0 Max: 68 Err: 0 (0.00%)
summary + 39106 in 2.1s = 18273.8/s Avg: 0 Min: 0 Max: 39 Err: 0 (0.00%) Active: 0 Started: 10 Finished: 10
summary = 518494 in 30s = 17263.0/s Avg: 0 Min: 0 Max: 68 Err: 0 (0.00%)
Tidying up ... @ Tue Dec 27 18:44:32 CST 2016 (1482835472140)
... end of run
这里只设置了10个并发测试。28s是最近28秒内的平均TPS; Avg是平均响应时间;Max是最大响应时间;Err是错误率;Active是目前活跃的并发数。
Label----每个请求的名称,比如HTTP请求等
#Samples----发给服务器的请求数量
Average----单个请求的平均响应时间 毫秒ms
Median----50%请求的响应时间 毫秒ms
90%Line----90%请求响应时间 毫秒ms
95%Line----95%请求响应时间 毫秒ms
99%Line----99%请求的响应时间 毫秒ms
Min----最小的响应时间 毫秒ms
Max----最大的响应时间 毫秒ms
Error%----错误率=错误的请求的数量/请求的总数
Throughput----吞吐量即表示每秒完成的请求数
Received KB/sec----每秒从服务器端接收到的数据量
Sent KB/sec----每秒从客户端发送的请求的数量
- Jmeter之性能测试TPS解析
(152条消息) Jmeter之性能测试TPS解析_jmeter tps_林渊羡鱼的博客-CSDN博客
(154条消息) 【jmeter】监听器吞吐量与平均响应时间详解_jmeter查看平均响应时间_山河不见老的博客-CSDN博客
- Linxu环境测试报告
(152条消息) Linux环境运行jmeter+测试报告查看_linux 查看jmeter 聚合报告_Bruce小鬼的博客-CSDN博客.
- 查看结果书
(153条消息) Jmeter察看结果树将测试结果保存本地_jmeter查看文件保存位置_weeds606的博客-CSDN博客
- 理解tips
【jmeter】监听器吞吐量与平均响应时间详解_jmeter查看平均响应时间_山河不见老的博客-CSDN博客
- cpu占用过高
Docker 容器内分析 java程序占用 cpu 高问题排查分析-腾讯云开发者社区-腾讯云 (tencent.com)
- 服务器与并发量
服务器一般几核够用-羊毛之家 (yangmao.info)
正在上传…重新上传取消
- 使用这个docker 镜像含有jdk
openjdk-8u111-jdk
Docker
- 一些用到的linux命令
top
jstack 6 > a.txt 信息到a.txt
ps aux
- Docker 命令
# 加载本地镜像到docker里
docker load < alpine-oraclejre8-8.202.08-full.tar
#监控docker容器中使用率
docker stats <容器id>
# 拷贝容器中文件到本目录
docker cp 13ab29a61863:/a3.txt .
- VisualVm远程监控
利用VisualVm和JMX远程监控K8S里的Java进程 - UCloud云社区
利用VisualVm和JMX远程监控K8S里的Java进程 - 颇忒脱 - SegmentFault 思否
- JStack
docker查看那个java程序cpu使用率100% - 大海全是¥ - 博客园 (cnblogs.com)
(154条消息) docker 分析cpu占用过高_docker容器cpu过高_打包爱的博客-CSDN博客
Java程序占用 CPU 过高排查方法 - 简书 (jianshu.com)
- Tomcat 线程数
(153条消息) Tomcat线程数、连接数相关配置_tomcat连接数_爱琴孩的博客-CSDN博客
- Ngixn 日志配置
nginx 日志log_format - sucre_tan - 博客园 (cnblogs.com)
nginx日志配置(log_format) (hebinghua.com)
(152条消息) Nginx配置中的log_format_nginx log_format_兴乐安宁的博客-CSDN博客
- Springboot nginx响应超时
(152条消息) Springboot调整接口响应返回时长(解决响应超时问题)_springboot设置接口超时时间_JermeryBesian的博客-CSDN博客
- Jemter录制脚本
(156条消息) JMeter脚本录制-快速上手篇_jmeter录制_软件测试大叔的博客-CSDN博客
- 使用jprofiler查看检查代码
https://blog.csdn.net/vicky_pyh/article/details/88797514
- 统计linxu 网路流量
在Linux下怎么看网络流量_系统运维_内存溢出 (outofmemory.cn)
sar -n DEV 1 4
- K8s中内存资源限制介绍
(152条消息) kubernetes(k8s):容器资源限制(内存限制、cpu限制、namespace限制)_k8s 内存限制_鲸鱼妹子的博客-CSDN博客
相关文章:

记一次压力测试
性能测试文档 背景 为对产品性能有一定了解,现将产品展开一次性能测试; 环境与工具 本章为基本工具准备及linux命令说明,无先后顺序。 Xshell工具 本文使用Xshell在Windows界面下远程登录linux主机安装Xshell直接全部选择默认选项即可&…...

一个文明是否有竞争力,在很大程度上取决于信息传递的效率。
文章目录 引言I 有效地传递信息1.1 信息传播分类1.2 信息传递的有效性II 科技进步的必要条件和充分条件2.1 能量总量2.2 能量密度2.3 衡量科技成就的大小2.4 科学的诞生的意义:获得叠加式收益引言 科技进步的必要条件是能量总量,而充分条件是能量密度。一个文明是否有竞争力,…...

测试4年,跳槽一次涨8k,我跳了3次···
最近有人说,现在测试岗位初始工资太低了,有些刚刚入行的程序员朋友说自己工资连5位数都没有.....干了好几年也没怎么涨。看看别人动辄月薪2-3万,其实我想说也没那么难。说下如何高效地拿到3w。 1.暂且把刚入行的条件设低些吧,大专…...

Redis 入门教程(简单全面版)
1 安装: 1.1 生产环境安装 注意: 1、如果安装过程有问题可以参考源代码中的 README.md 文件 2、如果服务器只安装一个 redis 通常选择 /usr/local/redis 作为安装目录,如果安装多台则建议带上 服务名称 区分(建议带上 服务名称 区…...

java并发-AQS
当我们使用Java并发编程时,我们经常会听到“AQS”的概念。AQS代表“AbstractQueuedSynchronizer”,是Java并发包中的一个重要组件。AQS提供了一个框架,使得开发者可以轻松地实现各种同步器,例如锁,信号量,倒…...

openAI图像生成开发文档
图像生成 了解如何使用我们的 DALLE 型号 介绍 图像 API 提供了三种与图像交互的方法: 根据文本提示从头开始创建图像根据新的文本提示创建现有图像的编辑创建现有图像的变体 本指南介绍了使用这三个 API 终结点的基础知识以及有用的代码示例。要了解它们的实际…...

Python综合案例—利用tkinter实现计算器的程序
目录 一、导入 tkinter 库 定义全局变量 二、定义回调函数 三、创建窗口对象 四、创建标签控件 五、创建数字按钮 六、创建加、减、乘、除和等于按钮 七、创建清空按钮 八、总结 用Python实现计算器可以让我们更好地理解面向对象编程、GUI 编程和事件驱动编程等概念&a…...

canvas学习笔记
其实还有react还没有学,但是公司技术栈里面有canvas,所以先系统学习一下canvas 一、canvas 简介 <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也…...

Navicat Premium 15安装注教程
Navicat Premium 15安装 准备工作 下载好安装包navicat150_premium_cs_x64和安装完成Navicat Premium 15 链接:https://pan.baidu.com/s/1TJs3pjAXJXhu7-13DJLzpg 提取码:hunk 安装Navicat Premium 15 无脑操作,下一步下一步就行了&…...

yolo v8
这个系列代码被封装的非常的精致,对二次开发不太友好,虽然也还是可以做些调节 模型的导出 有三种方式试过,都可以导出onnx的模型 1. 用yolov8 源码来自:ultralytics\yolo\engine\exporter.py (不固定尺寸) yolo export modelpa…...

2022IDEA的下载、安装、配置与使用
文章目录 1.IntelliJ IDEA 介绍1.2 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA 的主要功能介绍1.3.1 语言支持上1.3.2 其他支持 1.4 IDEA 的主要优势:(相较于 Eclipse 而言)1.5 IDEA 的下载地址1.6 官网提供的详细使用文档 2.windows 下安装过程2.1 安装前的…...

实验十 超市订单管理系统综合实验
实验十 超市订单管理系统综合实验 应粉丝要求,本博主帮助实现基本效果! 未避免产生版权问题,本项目博主不公开源码,如果您遇到相关问题可私聊博主! 一、实验目的及任务 通过该实验,掌握利用SSM框架进行系…...

微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建
微服架构基础设施环境平台搭建 -(二)Docker私有仓库Harbor服务搭建 通过采用微服相关架构构建一套以KubernetesDocker为自动化运维基础平台,以微服务为服务中心,在此基础之上构建业务中台,并通过Jekins自动构建、编译、…...

springboot+freemarker+restful
什么是freemarker? FreeMarker是一种模板引擎,它可以用于生成各种类型的文档,比如HTML、XML、PDF、Word等。它可以通过简单的模板语法和数据模型来生成文档内容。与传统的JSP相比,FreeMarker的语法更加简洁和易读,并且可以很好地…...

基于Kubernetes集群构建大中型企业CICD应用平台(1)-- devOps
一、DevOps介绍 软件开发最开始是由两个团队组成: 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。 运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。 这看似两个目标不同的团队需要协同完成一个软件的开发。 …...

什么是模型鲁棒性和泛化能力
目录 1、鲁棒性 2、泛化能力 1、鲁棒性 定义:在统计学领域和机器学习领域,对异常值也能保持稳定、可靠的性质,称为鲁棒性。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃&a…...

AI翻译工具分享
LanguageX简介 冠军翻译引擎交互式翻译,为专业译者而生的新一代译者工具 自2017年神经网络机器翻译流行以来,“机器翻译替代人工翻译”的观点屡见不鲜。作为一个技术和语言背景结合的团队,LanguageX认为语言服务是高度复杂、需要创意的智力活动,并肩负着人类沟通的重要使命。La…...

选男友最好的方式就是爬山
爬山,作为一种户外运动,一直备受青睐,拥有着许多的好处。而对于现代人来说,选择一位合适的伴侣,也是一件非常重要的事情。 那么,为什么不将两者结合起来,用爬山来寻找最合适的男友呢?…...

C++面经:初始化全局变量和未初始化全局变量有什么区别
全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。 考点: 考察C/C语言内存模型,.data,.bss段存放的内容。 …...

vue-2 指令:
指令 什么是html属性:就是用来扩展html标签的功能,属性是写在html的开发标签中:属性“属性值”, 指令就是用来扩展在vue中标签的功能 {{}} :模板语法,文本插值 不可解析html标签 {{ 可以写变量&#x…...
非常提效的7款原型工具推荐
原型图工具允许在开发前进行测试和迭代过程,可以帮助节省大量的开发时间和成本。在本文中,我们盘点了7个易于使用的原型图工具,以提高您的生产力! 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制&…...

最新Kafka和RabbitMQ消息队列经典面试题汇总(含答案)
最新Kafka和RabbitMQ消息队列经典面试题汇总 1.消息队列的应用场景有哪些?2.RabbitMQ 有哪些优点?3.RabbitMQ 有哪些重要的角色?4.RabbitMQ 有哪些重要的组件?它们有什么作用?5.什么是消息持久化?6.RabbitMQ 要实现消息持久化,需要满足哪些条件?7.消息持久化有哪些缺点…...

软件测试行业对新人友好吗?
软件测试真的算是对新人小白非常友好的学科了,但是你也千万不要抱有幻想,觉得轻轻松松就能掌握真正的技能,然后如愿找到高薪工作。从0到1还是需要一个过程的,也是需要你付出相当大的努力去学习的 随着人工智能时代的到来…...

Python requests 模块
Python中的requests模块是一个HTTP客户端库,它允许您向任何Web服务器发送HTTP请求并获取响应。 下面是一个简单的示例,向某个网站发送一个HTTP GET请求: python import requests response requests.get("http://www.example.com&quo…...

IOC理论推导
1.UserDao接口 package com.kuang.dao;public interface UserDao {void getUser(); }2.UserDaoImpl业务接口 package com.kuang.dao;public class UserDaoImpl implements UserDao{Overridepublic void getUser() {System.out.println("默认获取用户数据");} }3.Us…...

我的一些感悟
记录一些感悟,不定时更新 当面临稍微突发的情况时,感到慌乱;遭遇一点挫折时,情绪低落;面对问题,不是首先思考解决办法,而是抱怨不已。这种心态基本上无法取得成功 做事雷厉风行,需要…...

NC 人力薪酬管理怎么结账?
NC 人力薪酬管理结账流程 1、先在【薪资发放】节点选择相应的薪资方案进行查询操作,然后进行计算操作; 2、计算操作完后,再进行审核操作; 3、如果薪资方案勾选了“发放数据需要审批”属性,则需要在【发放申请】节点…...

JavaWeb编程面试题——Spring Boot
目录 引言一、面试题导航二、面试题目1.什么是SpringBoot?2.谈谈你对SpringBoot的理解?3.为什么需要SpringBoot?4.SpringBoot的配置文件有哪几种格式?5.SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个&#x…...

Educational Codeforces Round 148 (Rated for Div. 2) A,B,C
A. New Palindrome 要求:对于一个回文串,判断是否可以转换为其他回文串 思路:如果回文串的前一半存在不相同的字符,就可以转换 #include<bits/stdc.h> using namespace std;int n; string s;void solve(){cin>>s;boo…...

C#串口通信从入门到精通(15)——流量控制(XON/XOFF协议实现)
文章目录 前言1、XON/XOFF流控原理介绍2、XON/XOFF发送端C#代码实现3、XON/XOFF接收端C#代码实现前言 通信双方在一个发送能力大于接收处理能力时若不限制发方的数据流量则最终会“淹没”接收方而导致数据丢失,针对这个问题常规的有硬件流控和软件流控方法,本文介绍的就是软…...