2011-10-04 43 views
0

我有一个使用Actor的并发Scala程序的工作原型。我现在试图微调不同演员的数量等。斯卡拉并发网络

一个阶段的处理过程需要通过互联网获取新数据。当然,我无法真正做到这一点。然而,我想如果我同时发布一堆请求,我可以减少总时间。因此,问题是:

=> Scala或Unix系统上的并发网络(如max num sockets)有限制吗?如果是这样,我怎么知道它是什么。

回答

5

在Linux中,每个程序可以打开的打开文件描述符的数量是有限制的。这可以使用ulimit -n来看。 /proc/sys/kernel/file-max有一个系统范围的限制。

另一个限制是Linux防火墙可以跟踪的连接数。如果您使用iptables连接跟踪防火墙,则此值为/proc/sys/net/netfilter/nf_conntrack_max

另一个限制当然是TCP/IP本身。由于每个连接需要(localIP,localPort,remoteIP,remotePort)的唯一组合,因此只能有65534个连接到相同的远程主机和端口。

关于通过并发连接加快速度:它不像使用更多连接那么简单。

这取决于瓶颈在哪里。如果您的本地连接正在被完全使用,添加更多的连接只会减慢速度。如果连接到同一台远程服务器并且连接完全使用,则更多操作只会减慢速度。

如果您的本地连接没有完全使用,并且您正在连接到多个远程主机,您可以从中获得好处。

如果你看看网页浏览器,你会看到他们限制了多少个连接到同一个远程服务器。它们对总共有多少连接也有限制。

+0

这正是我需要的信息,非常感谢。没有什么比Linux亲! – providence