linux jmeter 内存,ubuntu – JMeter – linux上的内存不足

我正在尝试为应用程序运行负载测试.为此,我在Ubuntu Vm上使用JMeter(v.2.13),具有60GB Ram和足够的CPU功率.目标是通过WebSocket连接10k用户.

但是在测试运行期间,我在ssh-console上遇到以下错误(大约1.5k到2.5k模拟用户)

OpenJDK 64-Bit Server VM warning: Attempt to protect stack guard pages failed.

OpenJDK 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f20ee653000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)

#

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (malloc) failed to allocate 12288 bytes for committing reserved memory.

# An error report file with more information is saved as:

# /jmetertests/jm/bin/hs_err_pid1833.log

OpenJDK 64-Bit Server VM warning: Attempt to deallocate stack guard pages failed.

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f2218de8000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)

提到的错误报告文件如下所示

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (malloc) failed to allocate 12288 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:2798), pid=1833, tid=140472285792000

#

# JRE version: OpenJDK Runtime Environment (7.0_75-b13) (build 1.7.0_75-b13)

# Java VM: OpenJDK 64-Bit Server VM (24.75-b04 mixed mode linux-amd64 )

# Derivative: IcedTea 2.5.4

# Distribution: Ubuntu 14.04 LTS, package 7u75-2.5.4-1~trusty1

# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again

我尝试通过在.sh文件中发出java命令之前添加以下行来修改jmeter.sh来分配更多内存:

JVM_ARGS="-Xms5g -Xmx20g -Xss300k"

我还尝试使用以下命令设置_JAVA_OPTIONS环境变量

export _JAVA_OPTIONS="-Xms5g -Xmx20g"

最后我发现这个命令是一些SO线程

sysctl -w vm.max_map_count=500000

top-Command为我提供了有关内存的以下信息

KiB Mem: 61836576 total, 15163400 used, 46673176 free, 10636 buffers

KiB Swap: 0 total, 0 used, 0 free. 94492 cached Mem

UPDATE

仅供参考:除了简单的数据编写器,我不会在JMeter中使用任何监听器.但是,即使禁用最后一个侦听器,也会抛出错误.

java -Xms40g -version

是成功的 – 所以我真的可以分配这么多的记忆

我通过使用减少了堆栈大小

-Xss300k

这有助于至少改变一些东西,因为我现在得到了一个

Uncaught Exception java.lang.OutOfMemoryError:

unable to create new native thread. See log file for details.

错误.似乎系统上的线程数已经耗尽?

UPDATE2

根据某些用户的要求,结果为uf ulimit -a

core file size (blocks, -c) 0

scheduling priority (-e) 0

pending signals (-i) 491456

max locked memory (kbytes, -l) 64

open files (-n) 500000

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

max user processes (-u) 491456

... all other entries are set to 'unlimited'

limits.conf包含以下条目

* hard nofile 900000

* soft nofile 900000

root hard nofile 900000

root soft nofile 900000

另外我已经将proc / sys / kernel下的threads-max设置为荒谬的高,并且还增加了proc / sys / vm / max_map_count的值

我错过了什么或者我做错了什么吗?

谢谢您的帮助.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值