服务器流量收发测试

文章目录

一、概述

我们在安装vnStat、wondershaper后,便想通过实际的数据收发来进行测试。

该怎么做呢?

二、实现方式一:编码

1. 主要流程

新建springboot工程 启用定时任务 定时发送请求

2. 核心代码

ScheduleJob.java

java 复制代码
import java.util.Arrays;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;

import lombok.extern.slf4j.Slf4j;

/**
 * 
 * ScheduleJob
 * 
 * @author 00fly
 * @version [版本号, 2022年11月30日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Slf4j
@Component
public class ScheduleJob
{
    @Autowired
    RestTemplate restTemplate;
    
    /**
     * 向本机外网发送数据,验证是否流量收发
     */
    @Scheduled(fixedDelay = 60000L)
    public void run()
    {
        try
        {
            log.info("run...");
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
            headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
            MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
            Resource resource = new ClassPathResource("data/nginx-1.25.3.tar.gz");
            params.add("file", resource);
            params.add("id", "1");
            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
            String uploadUrl = "http://124.71.129.204:8083/post";
            restTemplate.postForEntity(uploadUrl, requestEntity, String.class);
        }
        catch (Exception e)
        {
            log.error(e.getMessage(), e);
        }
    }
}

完整代码放送

3. 代码部署

项目目录执行打包

bash 复制代码
mvn clean package

将target目录springboot-http.jar文件,拷贝到124.71.129.204服务器,运行

bash 复制代码
#方式1
java -jar springboot-http.jar&exit

#方式2
java -jar springboot-http.jar&
#随后输入exit或logout退出

#方式3
nohup java -jar springboot-http.jar&

三、实现方式二:脚本

1. 脚本编写

需要提前准备文件/work/jar-run/nginx-1.25.3.tar.gz

新建/work/jar-run/send.sh

bash 复制代码
#!/bin/bash
curl http://124.71.129.204:8083/post -F "file=@/work/jar-run/nginx-1.25.3.tar.gz" >> /work/jar-run/send.log 2>&1

2. 新增crontab任务

bash 复制代码
#查看
crontab -l

#编辑
crontab -e

#新增如下内容,每分钟执行一次sh脚本
*/1  * * * * sh /work/jar-run/send.sh

四、查看结果

点击查看

有任何问题和建议,都可以向我提问讨论,大家一起进步,谢谢!

-over-

相关推荐
镜子AI7 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo7 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
知已难寻9 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning10 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii11 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
共享家952711 小时前
408 操作系统第一章
服务器·数据库·windows
相思难忘成疾11 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo11 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
云飞云共享云桌面11 小时前
1台SolidWorks服务器如何承载10个设计并发?
运维·服务器·网络·3d·制造