簡體   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