Jmeter压力测试+数据库索引命令+OpenSSH镜像下载+docker命令+服务器Jmeter压力测试流程+教你如何将Jmeter导出为.jmx测试计划文件+骑士巡游问题

 一、Jmeter压力测试

首先打开jmeter的bin目录:

点击jmeter.bat文件运行:

注意jmeter的图形界面是用来编辑图形测试计划的,跑测试是用命令行去跑。

Number of Threads是线程数,Ramp-up period是过程时间。

举例:线程数400个,过程时间10秒(1秒是1000毫秒,10秒是10000毫秒),所以是每隔25毫秒发送一个线程。

HTTP Request定义的是测试服务器的URL,访问的页面,请求头等:

扫描二维码关注公众号,回复: 17210842 查看本文章

注意最后要将Jmeter的图形测试计划导出为.jmx文件。

.jmx文件是JMeter测试计划的一种文件格式。在JMeter中,所有的测试计划都被保存为.jmx文件。这种文件包含了测试计划的所有元素,包括线程组、控制器、取样器、断言、监听器等等,它们都以XML格式储存在.jmx文件中。

步骤:

1.在jmeter中创建或修改完测试计划,选择文件,保存为测试计划:

2.选择要保存.jmx文件的位置,点击确定即可:

 

二、Jmeter压力测试的步骤

实验策略:首先要把.jmx文件放到目录下面,怎么放置采用scp来进行文件的传输,通过连接服务器的ip来将本地的测试脚本传输到远程的服务器上。

vim WriteProduct.jmx 进入写数据库测试脚本,然后更改其中的线程数。

输入jmeter -n -t WriteOrder.jmx -l W8000-10.jtl来进行jmeter文件的编译。(jmeter -n -t ReadProduct.jmx -l R2000-10.jtl 是读数据库测试脚本的编译)

-n 表示非GUI模式运行,通常在服务器或命令行环境中使用。-t 指定要运行的JMeter测试脚本的路径,这里是WriteProduct.jmx。-t 指定要运行的JMeter测试脚本的路径,这里是WriteProduct.jmx。-l表示日志文件,即测试结果写入的目标文件,这里是W2000-10.jtl。

由此会得到一个W2000-10.jtl的文件。

然后输入以下的命令输出日志文件:

rm -r result/*

jmeter -g W7000-10.jtl -o result/ (读 jmeter -g R2000-10.jtl -o result/

-g 表示要生成报告的日志文件,这里是W2000-10.jtl。-o 表示生成报告的输出目录,这里是result/。JMeter将在这个目录下生成一个HTML格式的性能测试报告。

在自己的本地机器上创建一个文件夹,记住其中的路径,比如:

在C/Users/a/Downloads下mkdir W1000-100

cp -r [email protected]:/root/result/* W1000-10

这是一个使用scp命令复制文件的命令。scp是secure copy的缩写,用于在本地主机和远程主机之间复制文件。-r 表示递归复制,可以复制目录及其子目录下的所有文件。

[email protected]:/root/result/* 指的是远程主机的文件或目录,格式是用户名@主机地址:文件路径。这里表示远程主机的IP地址是120.46.39.186,用户名是root,要复制的文件在/root/result/目录下。W1000-10 表示要将文件复制到本地主机的目标目录。这里表示复制到当前目录下的W1000-10目录。如果目标目录不存在,scp将创建它。

然后具体查看Response time ,然后要查看Active Threads over time。

三、数据库索引常用命令

1. 创建索引(普通添加)

语法:create index 索引名 on 表名(字段名)

示例:create index index_origin_price on goods_product(Original_price);

含义:在goods_product表的Original_price字段上创建一个名为index_origin_price的索引。

2. 删除索引

语法:alter table 表名 drop index 索引名

示例:alter table goods_product drop index index_name;

含义:删除goods_product表上的名为index_name的索引。

3. 展示索引

语法:show index from 表名;

示例:show index from goods_product;

含义:显示goods_product表中的所有索引。

4. 注意事项

1. 原数据库3912条数据,每次清空新写入数据:delete from goods_product where id>5461;

2. select * from goods_product;

四、OpenSSH镜像的下载

阿里云开源镜像安装包下载

cd C:\Program Files\OpenSSH

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

net start sshd

scp C:\Users\Dell\Desktop\WriteProduct.jmx [email protected]:/home/root/

五、其它常用命令

1. 进入容器

语法:docker exec -it 容器id /bin/bash

docker exec这是Docker的一个命令,用于在正在运行的容器中执行命令。-it这是docker exec命令的两个选项,-i代表interactive保持STDIN开启即使没有附加。-t代表tty分配一个伪终端。这两个选项一起使用可以让你有一个交互式的shell。/bin/bash在Docker容器中运行的命令,运行bash是一种常用的Unix shell,可以在Docker容器的内部环境中得到一个bash shell,从而可以执行更多的命令。

示例:docker exec -it b349119f893f /bin/bash

2.进入数据库

语法:mysql -uroot -p

3.进入容器同时进入数据库

语法:docker exec -it 容器id mysql -uroot -p

4.查看docker容器列表

docker ps

其它、骑士巡游问题

题目描述:骑士在8*8的国际象棋棋盘上进行巡游,当指定骑士出发的位置后(x,y),能输出骑士遍历棋盘的所有路径坐标。

输出效果:

  

代码(请在visual stdio下运行,Dev-C++无法编译vector):

#include <utility>
#include <string>
#include <vector>
#include <iostream>
using namespace std;

const int N = 27;
int p, q;
bool st[N][N];
vector<pair<int, int>> path;
int dx[8] = { -2,-2,-1,-1,1,1,2,2 };
int dy[8] = { -1,1,-2,2,-2,2,-1,1 };

bool dfs(int x, int y, int cnt){
	path.push_back({ x,y });
	if (cnt ==64) {
		for (auto a : path) cout << "(" << a.first <<"," << a.second << ")" << endl;
		return true;
	}
	st[x][y] = true;
	for (int i = 0; i < 8; i++)
	{
		int a = x + dx[i], b = y + dy[i];
		if (a < 1 || a > 8 || b < 1 || b > 8) continue;
		if (st[a][b]) continue;
		if (dfs(a, b, cnt + 1))return true; //这点很重要,能保证输出的是字典序最小的。
	}
	st[x][y] = false;
	path.pop_back();
	return false;
}

int main(){
	int i, j;
	cin >> i >> j;
	path.clear();
	memset(st, 0, sizeof(st));
	bool flag = false;
	if (dfs(i, j, 1)) {
		flag = true;
	}
}

【如何解决了问题,烦请点赞+收藏】 

猜你喜欢

转载自blog.csdn.net/RuanFun/article/details/134321199