晓夏

YoungCheung

Zhang Sir's technical way

jmeter性能压测异常

浏览量:762

一、环境描述

    xx系统需要用jmeter工具进行性能测试,执行机系统环境为centos7.3 64位 8C 64G,jdk1.8 ,jmeter4.0 。

    执行命令如下:

jmeter -n -t a.jmx -l a.jtl -j a.log

抛出异常:

# Native memory allocation (mmap) failed to map 262144 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/ctmp/hs_err_pid32680.log

二、异常处理

        系统:系统为64G,出现异常时内存剩余58G, 文件句柄也进行了优化,因此不会是系统本身内存不足。

         jdk:jdk版本为"1.8.0_121 64-Bit" ,和系统版本相匹配

        程序:我们跑的程序为jmeter官方4.0版本,默认分配内存为1G。

        根据几轮xms增大 2G 5G 10G 根本解决不了问题,分析程序占用分配初始内存以及jmeter并发数调整xms以及xmx,

        1个用户请求并发20,如果初始化位xms初始化位1G,xms最大为5G,那么1一个用户执行一次就是1G*20>5G 超过最大分配

    调整如下:

: "${HEAP:="-Xms64m -Xmx10g -XX:MaxMetaspaceSize=512m"}"

   初始化64m 最大10G=10240m ,一个用户20个并发就是 64*20=1280m 远远小于我们的10G,此时修改完毕 重启jmeter服务,模拟5个用户并发20相当于100并发 那么100*64m=6400m=6G 此时查看执行日志未见异常。

三、总结

遇到内存相关的问题解决思路如下:

1、根据工作经验分析出现原因

2、分析出现异常时日志

3、查看系统本身涉及相关限制

4、询问开发服务本身是否存在jvm相关的设定

5、查看程序本身配置是否恰当

6、其他

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  • 张sir 回复该评论

    [ctmp@BJ-DBL-ZYC1Q-XTCS-VM023 bin]$ cat checkPaperInfo.jmx




    false
    true
    false







    continue

    false
    -1

    100
    50
    true
    300

    1530775357000
    1530775357000



    ,
    utf-8
    Id.csv
    false
    true
    shareMode.all
    false
    examId
    D:\migu项目\咪咕印象 \home\perfadmin\apache-jmeter-3.1\bxd\script\Id.csv
    false



    true



    false

    =



    39.156.1.82
    16306
    https

    /exam/myExams/A1.do
    GET
    true
    false

    发布于 2018-07-12 17:05:26

  • 张sir 回复该评论

    [ctmp@BJ-DBL-ZYC1Q-XTCS-VM023 bin]$ cat /home/ctmp/hs_err_pid7581.log
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
    # Possible reasons:
    # The system is out of physical RAM or swap space
    # In 32 bit mode, the process size limit was hit
    # Possible solutions:
    # Reduce memory load on the system
    # Increase physical memory or swap space
    # Check if swap backing store is full
    # Use 64 bit Java on a 64 bit OS
    # Decrease Java heap size (-Xmx/-Xms)
    # Decrease number of Java threads
    # Decrease Java thread stack sizes (-Xss)
    # Set larger code cache with -XX:ReservedCodeCacheSize=
    # This output file may be truncated or incomplete.
    #
    # Out of Memory Error (os_linux.cpp:2627), pid=7581, tid=0x00007f2498de7700
    #
    # JRE version: (8.0_121-b13) (build )
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.121-b13 mixed mode linux-amd64 compressed oops)
    # Fail

    发布于 2018-07-12 17:04:42