英文:
I am getting JMeter Out of Memory error even after I already upgraded my RAM from 8G to 16G
问题
以下是翻译好的内容:
请问有人能帮助我解决在运行 JMeter 时遇到的 内存不足(OOM)错误吗?
我是 Java 和 JMeter 的新手,也是性能测试方面的初学者。我使用了命令提示符,但仍然遇到了 内存不足 的问题。我尝试调整了堆大小,但每次更改后运行都没有继续进行。
我的当前堆大小如下:
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
我又增加了内存:从 8GB,我的内存现在是 16GB。
但当我再次使用 1000个线程 运行它时,会显示下面的错误:
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-130,5,main]. See the log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-63,5,main]. See log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-135,5,main]. See log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-19,5,main]. See log file for details.
#
# Java 运行时环境内存不足,无法继续运行。
# 本机内存分配(malloc)无法为 ChunkPool::allocate 分配 32756 字节
有时我也会遇到仅出现以下错误:
# Java 运行时环境内存不足,无法继续运行。
# 本机内存分配(malloc)无法为 ChunkPool::allocate 分配 32756 字节
请问有人能帮助我吗?我只是一个初学者,如果您回复时不要使用过于技术性的术语,我会非常感激。
提前谢谢您。
英文:
Can someone please help me with the Out of Memory (OOM) error that I encountered while running JMeter
I am a newbie in Java and in JMeter, and also in performance testing. I used the command prompt but I am still encountering Out of Memory issue. I tried to adjust the heap size but running did not continue every time I change it.
My current heap size is below
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
I added another memory: from 8GB, my memory is now 16GB.
But when I run it again with 1000 threads, the error below is shown:
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-130,5,main]. See the log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-63,5,main]. See log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-135,5,main]. See log file for details.
Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread in thread Thread[Thread Group 1-19,5,main]. See log file for details.
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
Sometimes I am also encountering just this error:
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
Can someone please help me. I am just a beginner so I would appreciate if you will reply with terms that are not too technical.
Thank you in advance.
答案1
得分: 1
你所遇到的错误表明底层的操作系统无法创建新的本地线程/进程。
- 尝试增加操作系统的限制,例如,如果你使用的是Linux,你可以使用
ulimit -n
命令来检查最大线程数。 - 在任何情况下,你都可以通过
-Xss JVM参数
来减少堆栈大小。
不幸的是,根据当前的描述,你的问题没有提供足够的信息以便得出全面的答案。如果上述提示没有帮助,考虑添加更多细节,例如:
- 操作系统版本和架构
- JMeter版本
- Java版本和架构
- .HPROF文件的前20行内容
同时,确保遵循来自《JMeter负载测试“内存不足”失败的9种简单解决方案》文章中的建议。
英文:
The error you're getting indicates that underlying operating system is not able to create a new native thread / process.
- Try increasing limits for the operating system, i.e. if you're on Linux you can check the maximum number of threads using
ulimit -n
command - In any case you can decrease the stack size via
-Xss JVM argument
Unfortunately in its current shape your question doesn't provide enough information in order to come up with a comprehensive answer, if above hints don't help consider adding more details like:
- Operating system version and architecture
- JMeter version
- Java version and archivecture
- At least first 20 lines of the .HPROF file
Also make sure to follow recommendations from the 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure article
答案2
得分: 0
the flag Xmx indicates the maximum memory for the JVM. You should increase your xmx value to something more appropriate for your usage.
try:
set HEAP=-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m
英文:
the flag Xmx indicates the maximum memory for the JVM. You should increase your xmx value to something more appropriate for your usage.
try:
set HEAP=-Xms1g -Xmx4g -XX:MaxMetaspaceSize=256m
答案3
得分: 0
更改 jmeter.sh 文件中的堆大小,如果您使用的是 Linux/Ubuntu,则修改 Jmeter.bat 文件(如果是 Windows 系统)。将 -Xmx1g
增加到系统内存的一半,例如 4GB(-Xmx4g)。还尝试将用户负载从 500 增加,并在 Windows 的任务管理器中检查 CPU 和 RAM 利用率。
英文:
change Heap size in jmeter.sh file if you are using Linux/ubuntu, Jmeter.bat in windows. Increase the -Xmx1g =
to half of the memory of the system i.e., 4gb(-Xmx4g). also try to increase the user load from 500 and check the CPU and RAM utilization in Task Manager of Windows.
答案4
得分: 0
我曾在尝试在8GB RAM中运行1万个虚拟用户时遇到了内存不足的问题。后来将实例内存增加到16GB,成功地运行了1万个虚拟用户的负载。
-
在 /etc/profile/ 中将JVM内存增加为12GB。
-
在 "jmeter" 文件(Linux操作系统)中将JMeter堆大小增加为10GB。 (对于Windows服务器,在 "jmeter.bat" 文件中有 "set HEAP" 选项)
-
打开文件限制 - 65535
-
最大用户进程限制 - 65535
以 root 用户身份打开命令窗口
执行以下命令并更新值以更改默认限制
- vim /etc/security/limits.conf
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
- vim /etc/sysctl.conf
fs.file-max = 65535
sysctl -p
- reboot
重启后,更改将影响计算机,并请确认交叉验证。
应该以 root 用户身份在非GUI模式下运行 JMeter 脚本。
注意:如果有的话,在 "bin" 文件夹中删除转储堆文件。
英文:
I have faced the out of memory issue on trying to run 10k vusers in 8GB RAM. Later on increased the instance memory as 16GB and 10k vusers load ran successfully.
-
Increase JVM memory as 12 GB in /etc/profile/
-
Increase JMeter Heap as 10GB in "jmeter" file(Linux OS). ('set HEAP' option is available in "jmeter.bat" file for Windows server)
3.Open files limit - 65535
- maximum user process limit - 65535
Open the command window as root user
Execute following commands and update values to change the default limit
- vim /etc/security/limits.conf
root soft nproc 65535
root hard nproc 65535
root soft nofile 65535
root hard nofile 65535
- vim /etc/sysctl.conf
fs.file-max = 65535
sysctl -p
- reboot
After rebooting, the changes will be affected in the machine and kindly cross verify that.
Should run the JMeter script in Non-GUI as a root user only.
Note: Delete dump heap file in "bin" if any.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论