工作中性能压测总结及常用的linux命令


Q1:线上压测步骤:
1、写压测报备邮件和压测方案
2、准备压测脚本
3、申请发压机(私有云)
4、登录发压机 上传jmeter文件和csv文件 执行压测命令
5、写压测记录报告

压测工具 :jmeter ,将压测脚本&压测数据上传到linux系统中(用rz命令),用命令行压测
Q2:压测方式2种:
1、单机压测
(1)压测执行命令:
cd .. 进入home目录下
sudo sh /home/yueling001/apache-jmeter-5.0/bin/jmeter.sh -n -t delegate.jmx -l delegate`date +%s`.jtl -e -o resultdelegate`date +%s`

(2)linux文件夹下载(聚合报告下载)
 a、压缩文件夹
i:进入压测结果文件夹所在路径(用cd命令)
ii:  tar cvzf ./opptyresult9.gz opptyresult
b、下载
sz opptyresult9.gz

(3)压测过程中 修改压测脚本
进入压测脚本所在路径
vim **.jmx  
 /(需要搜索的内容 ps:“/"相当于grep)
i    (编辑)
esc
:wq! (强制退出并保存)

Q21:多个单机同时压测
注意点:脚本&csv文件一致
压测的tps:是多个单机的tps之和
avg:是多个单机的avg的平均值

2、分布式压测(master-slave/controller-agent)
压测步骤:
a、选择一个机器做为controller(存放压测脚本**.jmx),其他多个机器作为agent(存放csv文件(为了模拟线上真实的场景,入参和Header等的取值一般采用变量的形式),注:多个agent中存放csv文件的路径要保持一致)
b、修改jmeter的bin路径下的jmeter.properties中的remote_host的值 配置远程的agentid
c、在对应的agent上启动jmeter-server
      i:   cd /home/yueling001/apache-jmeter-5.0/bin
      ii:  nohup ../yueling001/apache-jmeter-5.0/bin/jmeter-server -Djava.rmi.server.hostname=10.26.30.13 &
      iii:  终止进程可以用 ps -ef|grep jmeter-server|grep -v grep|awk '{print $2}'|xargs kill -9命令杀死进程,停止发压
      iiii:  查看线程是否启动  ps -ef|grep jmeter-server
d、在控制器上执行压测(controller)
        cd /home/yueling001/apache-jmeter-5.0/bin
        sudo sh /home/yueling001/apache-jmeter-5.0/bin/jmeter.sh -n -t oppty.jmx -l oppty`date +%s`.jtl -e -o resultoppty`date +%s` -R 10.26.30.13:1099,10.26.30.16:1099
       (ps:sudo sh /home/yueling001/apache-jmeter-5.0/bin/jmeter.sh -n -t oppty.jmx -l oppty`date +%s`.jtl -e -o resultoppty`date +%s` -r    会执行jmeter.properties中配置的所有的remote_host)
注意:脚本中参数化文件(csv文件路径)路径写绝对路径 [filepath](注意:不要写错路径)("/”)
Q3:压测的聚合报告

1、Label - 请求对应的name属性值。
2、 Samples - 具有相同标号的样本数,总的发出请求数。
3、Average - 请求的平均响应时间。
4、Median - 50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值。
5、90% Line - 90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值。
6、95% Line - 95%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第95%的值。
7、99% Line - 99%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第99%的值。
8、Min - 最小响应时间。
9、Max - 最大响应时间。
10、Error % - 本次测试中,有错误请求的百分比。
11、Throughput - 吞吐量是以每秒/分钟/小时的请求量来度量的。这里表示每秒完成的请求数。tps
12、Received KB/sec - 收到的千字节每秒的吞吐量测试。(评判网络速度)
13、Sent KB/sec - 发送的千字节每秒的吞吐量测试。(评判网络速度)

Q4:压测过程中需要关注的指标
1、被压机器的cpu使用率
2、被压服务的cpu使用率
3、jvm memory
4、jvm gc
5、延迟分布  nginx请求
6、redis m-s的内存和cpu使用率
以上指标都从fast上看
Mysql的指标(慢查询 连接数)
7、聚合报告的tps&avg

扩展:常见的shell命令

ls:列出当前目录下的文件和子目录。

cd:切换当前目录。

pwd:显示当前所在的目录路径。

mkdir:创建一个新的目录。

rm:删除文件或目录。

cp:复制文件或目录。

mv:移动文件或目录。

touch:创建一个新的空文件或者更新一个已有文件的修改时间。

cat:连接文件并打印到标准输出设备上。

grep:在文件中查找指定的字符串。

find:在指定目录下查找文件。

chmod:修改文件或目录的权限。

chown:修改文件或目录的所有者。

ps:显示当前系统中正在运行的进程。

top:显示当前系统中占用资源最多的进程。

tar:打包和解包文件。

ssh:远程登录到另一台计算机。

scp:在计算机之间复制文件。

ping:测试网络连接。

curl:从命令行下载文件。

ssh的用法详情:

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地传输数据。SSH协议通常用于远程登录到另一台计算机,并执行命令或操作文件。下面是SSH命令的详细用法:

1、连接到远程计算机
   ssh username@remote_host
其中,username是远程计算机的用户名,remote_host是远程计算机的IP地址或域名。执行这个命令后,会提示输入密码,输入正确的密码后就可以登录到远程计算机了。

2、指定端口号连接远程计算机
如果远程计算机的SSH服务使用了非标准的端口号,可以使用-P选项指定端口号:

  ssh -p port username@remote_host
其中,port是SSH服务的端口号。

3、执行远程命令
可以在SSH命令后面添加要执行的命令,这样就可以在远程计算机上执行这个命令了。例如:

ssh username@remote_host ls -l
这个命令会连接到远程计算机,并执行ls -l命令,列出远程计算机上的文件和目录。

4、传输文件
可以使用scp命令在本地计算机和远程计算机之间传输文件。例如:

scp local_file username@remote_host:/remote/directory
这个命令会将本地计算机上的local_file文件复制到远程计算机的/remote/directory目录下。

5、断开SSH连接
可以使用exit命令或者按下Ctrl + D键来断开SSH连接。

以上是SSH命令的一些常用用法,可以帮助用户在远程计算机上执行命令、传输文件等操作。需要注意的是,SSH连接是基于加密的,所以在使用SSH时,要确保连接的安全性,避免密码泄露等安全问题。

ping 域名返回结果分析:

1、目标主机的IP地址:ping命令会将域名解析为对应的IP地址,并显示在结果中。这是目标主机的网络标识符。

2、ICMP Echo请求和回复的信息:ping命令会发送ICMP Echo请求到目标主机,并等待目标主机返回ICMP Echo回复。结果中会显示每个请求的序列号、发送和接收的时间、以及往返时间(Round-Trip Time,RTT)。

3、统计信息:ping命令会在结束时显示一些统计信息,包括发送的ICMP Echo请求数量、接收到的回复数量、丢失的回复数量、丢包率和往返时间的统计信息(最小值、最大值、平均值)。

以下是一个示例的ping命令返回结果:

PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_seq=1 ttl=57 time=10.4 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=57 time=10.2 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=57 time=10.3 ms
64 bytes from 93.184.216.34: icmp_seq=4 ttl=57 time=10.1 ms
64 bytes from 93.184.216.34: icmp_seq=5 ttl=57 time=10.2 ms

--- www.example.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 10.1/10.2/10.4/0.146 ms
从上面的示例中,可以得到以下信息:

目标主机的IP地址是93.184.216.34。
发送了5个ICMP Echo请求,并且都成功接收到回复。
没有丢包,丢包率为0%。
往返时间的统计信息:最小值为10.1毫秒,最大值为10.4毫秒,平均值为10.2毫秒。
通过分析ping命令的返回结果,可以评估网络连接的稳定性和延迟情况。如果丢包率较高或往返时间较长,可能表示网络连接存在问题。
(注:ping ip的除了没有1,其他和ping 域名相似)

ping ip 没返回信息的原因:

ping命令和telnet命令的区别:

Telnet 命令的使用详解_tenlet_Ramboooooooo的博客-CSDN博客

(查看端口是否可以用:telnet ip port 例如 telnet 192.168.7.42 8080)