Scala中的并发网络

时间:2011-10-04 00:23:23

标签: linux scala networking

我有一个使用Actors的并发Scala程序的工作原型。我现在正在努力微调不同演员的数量等。

处理的一个阶段需要通过互联网获取新数据。当然,我无法真正做到加快这方面的速度。但是,我想如果我并行启动一堆请求,我可以减少总时间。因此,问题是:

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

1 个答案:

答案 0 :(得分:5)

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

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

另一个限制当然是TCP / IP本身。您只能与同一个远程主机和端口建立65534连接,因为每个连接都需要(localIP,localPort,remoteIP,remotePort)的唯一组合。

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

这取决于瓶颈所在。如果您的本地连接被完全使用,添加更多连接只会减慢速度。如果您连接到同一个远程服务器并且其连接已完全使用,则更多只会降低它的速度。

如果您的本地连接未完全使用且您正在连接到多个远程主机,那么您可以从中获益。

如果您查看Web浏览器,您会看到它们对同一远程服务器的连接数有限制。它们还限制了总共连接的数量。