zoukankan      html  css  js  c++  java
  • 压测过程中,CPU和内存占用率很高,案例简单分析

    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无法处理

  • 相关阅读:
    查找路径php.ini文件到底在哪里?
    对象androidandroid 开发中 如何取得ListView 的 每条Item 的对象
    文件内容红帽子数据库.profile文件内容详解
    思维流程对测试认识的三个阶段
    磁盘修改RHEL6使用udev修改asm磁盘名
    环境错误Unable to add window token android.app.LocalActivityManager$LocalActivityRecord@435def20 is not v
    deployconfigurationJboss remote access
    数据级别[Oracle] 事务隔离级别(Oracle的实现方式)
    Linux 基本命令
    PostThreadMessage
  • 原文地址:https://www.cnblogs.com/zhengah/p/4663839.html
Copyright © 2011-2022 走看看