Gatling 2 を使用してストレス テストを実行しているときに tomcat 6 に無残に失われました。ストレス テストの候補となる REST サービスは、単純な JSON 応答です。
ガトリングは 1 秒間に 900 人のユーザーを攻撃するように設定されています。
Play コントローラーのコードは次のとおりです。
@BodyParser.Of(BodyParser.Json.class)
public Promise<Result> getSamplePerf() {
Promise<JsonNode> promiseOfJson = Promise.promise(new Function0<JsonNode>() {
public JsonNode apply() throws Exception {
AResponseBean aResponseBean = new AResponseBean();
aResponseBean .setStatus("success");
aResponseBean .setMessage("Hello World. Welcome to Gatling...");
return Json.toJson(aResponseBean );
}
});
return promiseOfJson.map(new Function<JsonNode, Result>() {
public Result apply(JsonNode jsonNode) {
return ok(jsonNode);
}
} , Akka.system().dispatchers().lookup("contexts.my-dispatcher"));
}
私たちの application.conf は次のもので構成されています。
play {
akka {
akka.loggers = ["akka.event.Logging$DefaultLogger", "akka.event.slf4j.Slf4jLogger"]
loglevel = ERROR
actor {
default-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
parallelism-max = 64
parallelism-min = 8
}
}
}
}
}
contexts {
my-dispatcher {
fork-join-executor {
parallelism-min = 400
parallelism-max = 400
}
}
}
tomcat 6 でのテスト結果が明らかになりました:
---- Response Time Distribution ------------------------------------------------
> t < 800 ms 900 (100%)
> 800 ms < t < 1200 ms 0 ( 0%)
> t > 1200 ms 0 ( 0%)
> failed 0 ( 0%)
================================================================================
および組み込みの Netty の場合:
---- Response Time Distribution ------------------------------------------------
> t < 800 ms 22 ( 2%)
> 800 ms < t < 1200 ms 232 ( 25%)
> t > 1200 ms 646 ( 71%)
> failed 0 ( 0%)
================================================================================
プレイパフォーマンスの向上にご協力ください。