我将托管一个webrtc应用程序。服务器所需要做的只是传递消息,例如房间号,候选冰块,断开连接等,所有这些消息仅用于发出信号。我正在使用socket.io和node.js。
服务器几乎只是传递文本。没有注册,没有数据库,它们全都在内存中。它跟踪在线用户列表(仅在线人数)以及所占用房间的列表。
因此,列出了一些数字,它在用户之间传递文本,以便他们可以通过webrtc连接。
现在,很明显,当(如果)有大量流量进入时,列表可能会变得很大,例如每个列表中的10k-20k 5位数字(只有几个大列表)。
以及所有断开的连接,例如断开连接和连接。我需要一台可以快速完成此任务的服务器,最好是一台免费服务器。我的意思是,这只是文字,所以不应该那么大,对吧?但是我的应用是围绕将一个人连接到下一个连接的人而构建的。因此,如果一大群人在大约同一秒连接,那么我需要一台可以在短时间内处理该问题的快速托管服务器……这甚至会成为问题吗?
如果我只是为数字列表(无数据库)使用内存,并传递文本内容,那么我应该在服务器中确切寻找什么。
最佳答案
首先,这与webrtc
本身没有任何关系。您基本上想要的是一个chat-server
,这是一个将数据从一个client
发送到另一个server
的服务器。
其次,RAM
的类型与运行它所需的clients
的数量无关。重要的是您将同时拥有多少个game servers
。 (在某种程度上,即使没有RAM
,clients
显然也会消耗更多RAM
)。
第三,更多的RAM
并不意味着更快的处理。也就是说,如果您没有完全使用可用的RAM
,则添加更多内容不会有任何好处。显然,当您超过可用的clients
时,事情就会开始放慢很多。 Read more about it here
现在,将这些排除在外,让我们看看您需要什么。您可以通过将一些server
连接到RAM
来进行非常粗略的估算,并查看它使用了多少RAM
。检查clients
的数量是否增加(如果这些RAM
开始相互调用),并且增加了多少。现在,您具有x clients
的最小和最大clients
数量。我将使用大约10 RAM
进行此测试。
现在您可以进行估算了,计算出预期用户群的最小和最大RAM
多少。从现在开始,它将成为越来越多的优先选择,但是我至少要将该数量加倍,然后四舍五入到最有意义的webrtc
数量(14.7GB变为16GB,28.32GB变为32GB,等等。) )
根据我自己对nodejs
的经验(大约有1000-1500个并发用户),我会补充说8GB就足够了。但这实际上取决于您期望的用户数量。
在副 Node 上,我非常推荐将 javascript
用于服务器。它非常易于使用,任何知道chat-server
的程序员(因此基本上任何程序员)都可以在一两天内用nodejs
创建ojit_code。看看this open-source webrtc server in nodejs
关于node.js - webRTC应用程序需要多少托管RAM?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29761068/