0

Twitter-Finagle を使用してサーバーを作成します。サーバーの各 RPC 関数では、Finagle クライアントを使用して別のサーバーの RPC を呼び出すだけです。このような:

def rpc() = {
  // finagleClient is created in a std way according to Finagle's Doc:
  // val client = Thrift.newIface[Hello.FutureIface]("localhost:8080")
  // http://twitter.github.io/finagle/guide/Protocols.html#thrift-and-scrooge
  //
  val f: Future[xx] = finagleClient.otherRpc()
  f onSuccess { // do something }
  f onFailure { // handle exception }
}

しかし、それほど長くはありませんが、エラーが発生します:

org.jboss.netty.channel.socket.nio.AbstractNioSelector: Failed to accept a connection
java.io.IOException: open too many files

そして、私は使用lsof -pして、別のサーバーへの接続が多すぎることを発見しました (約 5000 接続!)。私はそれがどのように起こるのか知りたいですか?私が逃したものはありますか?

================ 問題解決 =============

plzはScalaを参照してください: mapValues がビューを生成する理由と、安定した代替手段があるのはなぜですか? 、Map の mapValue メソッドはトリッキーかもしれません

val resultIsAView = m.mapValue(mapFunction)

結果ビューが使用さmapFunctionれるたびに関数が再評価されます。resultIsAView

4

1 に答える 1