繁体   English   中英

试图导致邮递员的内存不足异常

[英]Trying to cause an Out of Memory Exception with Postman

我正在尝试测试一个简单的脚本,如果遇到内存不足错误,该脚本将终止并重新启动服务。 服务本身执行完整的CRUD操作,并在其启动脚本中定义的JVM选项中调用该脚本。

在start.sh脚本中:

DEFAULT_JVM_OPTS='"-Xmx512m" "-Dapp.name=app-service" "-XX:OnOutOfMemoryError=./oom.sh" "-Dspring.profiles.active='"$1"'"'

exec nohup "$JAVACMD" $DEFAULT_JVM_OPTS -jar $CLASSPATH > stdout.out 2> stderr.err &

并在oom.sh中

#!/usr/bin/env sh

kill %p;

echo "service out of memory"
sleep 5
echo "Restarting service"

./start.sh profileName

我目前最大的问题是实际上通过引发OOM错误来测试脚本。 从理论上讲,将发生的是将调用oom.sh脚本,这将杀死并重新启动服务。 我尝试使用Postman Runner发送500个所有请求,但没有运气。 有人知道更好的方法吗?

Java Service Wrapper可以工作吗? 它旨在处理应在其中运行您的应用程序的各种情况,但由于某些原因而无法运行(包括内存不足)。 这也是非常艰苦的。 https://wrapper.tanukisoftware.com

您可能有使用Wrapper之类的特定原因/要求,但如果您还没有的话,值得一看。

这会很快产生内存不足异常:

String s = "x";
while (s.length() > 0) {
  s += s;
}

这是一个使用简单程序引发OutOfMemoryError的示例: https : //crunchify.com/how-to-generate-out-of-memory-oom-in-java-programatically/

该程序在每个循环中消耗更多的内存。

正如评论指出的那样,您还可以抛出OutOfMemoryError进行测试:

throw new java.lang.OutOfMemoryError();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM