压测过程中,CPU和内存占用率很高,案例简单分析

时间:2023-02-03 22:54:13

Q:  最近公司测试一个接口,数据库采用Mongo
    并发策略:并发400个用户,每3秒加载5个用户,持续运行30分钟
    数据量:8000条左右

压测结果发现:
    TPS始终在5左右
    而CPU高达99%,内存使用情况也高达1.7G
    网卡流量145K

请问这种情况,是哪里的性能出现问题?

A:你这个CPU和内存监控的得是web服务器 就是部署程序的机器。
    1、尝试查看出现这类情况时候数据库process,看看是否是当时进程到达了所设置的进程数上限。如果是则调整数据库进程数上限再测试
    2、尝试查看程序连接池设置的最大连接数,如果程序设置的最大连接数上限很小,调整上限在测试看看
    进程排队是合理现象,但是需要在当前硬件环境下,将其控制在可接受范围内。
    如果经过调整过数据库进程上限和最大连接数,仍然无法解决问题,找到你的脚本
    假设你的脚本顺序是(其中a,b,c代表的是程序模块)
    web_submit_data(a);
    web_submit_data(b);
    web_submit_data(c);
    分别找出他们在analysis中的响应时间,按照顺序从第一个响应时间长的系统模块开始调优,就是调整程序的算法或者SQL。假如响应时间 b>c>a,那么就先调整b,之后再测试。因为有可能是由于b排队导致c无法正常执行所以才响应时间漫长的。
    以上仅供参考,没有用过mongodb,数据库进程数我参考的是oracle进程数的调整。

Q:    1.先说下这个接口是做什么的?你写还是查?
    2.你说的CPU高是前段还是DB服务器?
    3.你的服务器架构啥样?
    这些最基本的要提供
A:    1. 接口是取数据GET操作
    2. CPU高是应用服务器那台机子的CPU高,数据库没有监测
    3. 服务器架构采用nginx

A: 这个有几种可能:
    1.你的服务器出错了,cpu很高,你可以查查日志
    2.服务器处理能力很低,占用cpu很高,但是处理量很少
    3.内存发生泄露,或者内存不能释放,重复读写频繁,导致内存持续增大,cpu无法处理