python性能测试之服务器资源实时监控

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客文章浏览阅读1.5k次,点赞69次,收藏11次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5501

在进行性能测试时,实时监控服务器资源是非常重要的,原因如下:

评估系统瓶颈:

通过实时监控服务器的CPU、内存、磁盘I/O和网络带宽等资源使用情况,你可以发现系统的瓶颈在哪里。这有助于你了解哪些组件或服务可能成为性能问题的原因,并据此优化你的应用程序。

防止系统崩溃:

在压力测试期间,如果服务器资源消耗过高,可能会导致系统不稳定甚至崩溃。通过实时监控,你可以及时发现资源即将耗尽的情况,并采取相应的措施(如增加资源、优化代码或调整配置)来避免这种情况发生。

收集数据以分析性能:

实时监控可以提供大量的数据,这些数据可以帮助你分析系统的性能特征。例如,你可以根据CPU使用率的变化趋势来判断何时需要扩展硬件资源;也可以通过对比不同负载下的资源使用情况来评估系统的可伸缩性。

确保测试结果准确:

如果不考虑服务器资源的影响,你可能会得到错误的性能测试结果。例如,在资源不足的情况下,系统的响应时间可能会显著增加,从而影响到你的测试结论。因此,实时监控是确保测试结果准确性的关键步骤。

满足SLA要求:

对于某些高可用性和高性能要求的应用程序来说,必须保证在任何情况下都能提供良好的用户体验。实时监控服务器资源可以帮助你确保在性能测试期间符合服务水平协议(SLA)的要求。

以下是使用python 获取指定一台或多台linux服务器实时的cpu、memory、IO资源数据,并把获取到的数据插入mysql数据库指定的表的代码示例

import paramiko
import pymysql
def ssh_to_server(server, username, password):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(server, username=username, password=password)
    return client
def get_cpu_usage(client):
    stdin, stdout, stderr = client.exec_command("top -bn1 | grep 'Cpu(s)' | \
            sed 's/.*, *\([0-9.]*\)%* id.*/\1/' | awk '{print 100 - $1}'")
    return float(stdout.read().decode().strip())
def get_memory_usage(client):
    stdin, stdout, stderr = client.exec_command("free -m | awk 'NR==2{printf \"%.2f%%\", $3*100/$2 }'")
    return float(stdout.read().decode().strip())
def get_disk_io_usage(client):
    stdin, stdout, stderr = client.exec_command("iostat -dx 1 1 | awk '/^x/{print $(NF-2)}' | head -n 1")
    return float(stdout.read().decode().strip())
if __name__ == "__main__":
    servers = [
        {"address": "server1.example.com", "username": "user1", "password": "pass1"},
        {"address": "server2.example.com", "username": "user2", "password": "pass2"},
        # 添加更多服务器...
    ]
    db_config = {
        "host": "localhost",
        "port": 3306,
        "user": "your_database_user",
        "password": "your_database_password",
        "database": "your_database_name",
    }
    connection = pymysql.connect(**db_config)
    try:
        with connection.cursor() as cursor:
            for server_info in servers:
                server = server_info["address"]
                username = server_info["username"]
                password = server_info["password"]
                client = ssh_to_server(server, username, password)
                cpu_usage = get_cpu_usage(client)
                memory_usage = get_memory_usage(client)
                disk_io_usage = get_disk_io_usage(client)
                insert_query = f"INSERT INTO server_resource_data (server, cpu_usage, memory_usage, disk_io_usage) VALUES ('{server}', {cpu_usage}, {memory_usage}, {disk_io_usage})"
                cursor.execute(insert_query)
                print(f"Server: {server}")
                print(f"CPU usage: {cpu_usage}%")
                print(f"Memory usage: {memory_usage}%")
                print(f"Disk IO usage: {disk_io_usage}%")
                client.close()
            connection.commit()
    finally:
        connection.close()

loucst压测代码可参考前文:python+locust电商全流程性能测试

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值