Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker和Akka HTTP中最大化吞吐量?_Docker_Akka_Akka Http - Fatal编程技术网

如何在Docker和Akka HTTP中最大化吞吐量?

如何在Docker和Akka HTTP中最大化吞吐量?,docker,akka,akka-http,Docker,Akka,Akka Http,我正在为性能测量构建一个特定的夹具。我有一个负载发生器,boom()。有了这个,我可以产生相当可观的负载量 我还有一个Docker映像,其中包含作为负载平衡器的nginx,以及两个基于Akka HTTP的REST服务器。它们除了计算命中率之外什么都不做(它们总是返回200) 独立运行其中一台服务器(在Docker之外),我已经能够每秒获得1000次点击。不知道这是好是坏。在这个Docker配置中,这个数字下降到大约220次点击/秒。我有点期待,嗯。。。2000次点击/秒左右。越高越好。如果我能

我正在为性能测量构建一个特定的夹具。我有一个负载发生器,boom()。有了这个,我可以产生相当可观的负载量

我还有一个Docker映像,其中包含作为负载平衡器的nginx,以及两个基于Akka HTTP的REST服务器。它们除了计算命中率之外什么都不做(它们总是返回200)

独立运行其中一台服务器(在Docker之外),我已经能够每秒获得1000次点击。不知道这是好是坏。在这个Docker配置中,这个数字下降到大约220次点击/秒。我有点期待,嗯。。。2000次点击/秒左右。越高越好。如果我能找到一种方法,通过这种安排获得3-4K点击率/秒,我会很高兴

我经常收到这样的错误消息:

  [9549]    Get http://192.168.99.100:9090/dispatcher?reply_to=foo: dial tcp 192.168.99.100:9090: socket: too many open files
尝试使用--ulimit nofile=2048运行Docker,但没有帮助。我对Akka的application.conf只是:

akka {
    loglevel = "ERROR"
    stdout-loglevel = "ERROR"
    http.host-connection-pool.max-open-requests = 512
}
服务器代码:

object Main extends App {
  implicit val system = ActorSystem()
  implicit val mat = ActorMaterializer()
  println(":: Starting Simulator on port "+args(0))
  Http().bindAndHandle(route, java.net.InetAddress.getLoopbackAddress.getHostAddress, args(0).toInt)

  var hits = 0
  var isTiming = false
  var numSec = 1

  lazy val route =
    get {
        path("dispatcher") {
            if(isTiming) hits += 1
            complete(StatusCodes.OK)
        } ~
        path("startTiming" / IntNumber) { sec =>
            isTiming = true
            hits = 0
            numSec = sec
            val timeUnit = FiniteDuration(sec, SECONDS)
            system.scheduler.scheduleOnce(timeUnit){ isTiming = false }
            complete(StatusCodes.OK)
        } ~
        path("tps") {
            val tps = hits/numSec * 2
            complete(s"""${args(0)}: TPS-$tps\n""")
      }
    }
}
操作原理:启动流量流,然后调用/startTiming/10端点(在两台服务器之一上捕获10秒)。10秒后,呼叫/tps几次,计时节点将返回大约每秒点击数(x2)

你知道我怎样才能从中获得更高的性能吗