0

在使用 Gatling 2 执行压力测试时惨败给了 tomcat 6。我们用于压力测试的候选 REST 服务是一个简单的 JSON 响应。

Gatling 将在 1 秒内达到 900 个用户。

播放控制器代码如下:

@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%)
================================================================================ 

请帮助我们提高游戏性能。

4

0 回答 0