title: Erlang remote procedure call module internals
body: <p>I have Several Erlang applications on Node A and they are making rpc calls to Node B onto which i have Mnesia Stored procedures (Database querying functions) and my Mnesia DB as well. Now, occasionally, the number of simultaneous processes making rpc calls to Node B for data can rise to 150. Now, i have several questions:<br></p>
  
  <p><b>Question 1:</b> For each rpc call to a remote Node, does Node A make a completely new (say TCP/IP or UDP connection or whatever they use at the transport) CONNECTION? or there is only one connection and all rpc calls share this one (since Node A and Node B are connected [got to do with that epmd process])?<br><br></p>
  
  <p><b>Question 2:</b> If i have data centric applications on one node and i have a centrally managed Mnesia Database on another and these Applications' tables share the same schema which may be replicated, fragmented, indexed e.t.c, which is a better option: to use rpc calls in order to fetch data from Data Nodes to Application nodes or to develope a whole new framework using say TCP/IP (the way <a href="http://code.google.com/p/scalaris/" rel="nofollow">Scalaris</a> guys did it for their Failure detector) to cater for network latency problems?<br><br></p>
  
  <p><b>Question 3:</b> Has anyone out there ever tested or bench marked the rpc call efficiency in a way that can answer the following?<br>
       <b>(a)</b> What is the maximum number of simultaneous rpc calls an Erlang Node can push onto another without breaking down?<br>
      <b>(b)</b> Is there a way of increasing this number, either by a system configuration or operating system setting? (refer to Open Solaris for x86 in your answer)<br>
       <b>(c)</b> Is there any other way of applications to request data from Mnesia running on remote Erlang Nodes other than rpc? (say CORBA, REST [requires HTTP end-to-end], Megaco, SOAP e.t.c)
  <br></p>