Question

Our application has a server-node that delegates work to numerous worker-nodes that are remote actors. This application is expected to scale by increasing the number of worker nodes.

We are using Akka 1.3-RC4, and bet doing something wrong because we notice the following:

1> New sockets are opened when tasks are being sent to worker nodes from server. The sockets close once the task completes. Is there a benefit over / reason why the sockets are not always kept open? Is there any conf that we need to tweak?

2> When we list the number of file descriptors opened by the server process PID, the number shoots up proportional to the number of sockets open(totally expected). The goal of this application is to scale to huge (global) compute-farms however, once the limit of file descriptors is reached the server-node can't open sockets for any more worker-nodes. Wonder if we should change the design and approach in another way.

Another thing we are actively considering is to move to Akka 2 however, not sure if it has a better way to solve this kind of problem.

Thanks !

Was it helpful?

Solution

  1. You can increase the read timeout for the connections, to keep them open longer
  2. You should switch to 1.3-RC6 as it fixes some remote-related performance issues
  3. Akka 2.0 be default resuses inbound connections for outbound messages, leading to much better scalability for your use-case

Hope this helps,

Cheers, √

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top