Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ShinyProxy Docker-最大线程数(最大并发用户数)_R_Docker_Shiny_Computer Science_Shinyproxy - Fatal编程技术网

ShinyProxy Docker-最大线程数(最大并发用户数)

ShinyProxy Docker-最大线程数(最大并发用户数),r,docker,shiny,computer-science,shinyproxy,R,Docker,Shiny,Computer Science,Shinyproxy,我正在R Shining中创建一个企业范围的表单入口解决方案,该解决方案将面向大约400名用户 我的问题是(简而言之):既然R是一个单线程进程,我是否需要200个内核(假设每个内核有两个线程)来支持最多400个并发用户?如何指定基础架构要求(当前是32GB ram,4 CPU) 如前所述,后端没有复杂的R模型等。这基本上是一个数据库接口,数据处理最少,因此应用程序非常轻量级。我主要关心的是并发用户的数量。这也是一个内部解决方案 我使用ShinyProxy的容器化版本和Docker网桥与应用程序映

我正在R Shining中创建一个企业范围的表单入口解决方案,该解决方案将面向大约400名用户

我的问题是(简而言之):既然R是一个单线程进程,我是否需要200个内核(假设每个内核有两个线程)来支持最多400个并发用户?如何指定基础架构要求(当前是32GB ram,4 CPU)

如前所述,后端没有复杂的R模型等。这基本上是一个数据库接口,数据处理最少,因此应用程序非常轻量级。我主要关心的是并发用户的数量。这也是一个内部解决方案

我使用ShinyProxy的容器化版本和Docker网桥与应用程序映像通信


任何评论都将不胜感激。

如果您想绝对确定给定用户不会因为其他人使用R进程而经历延迟,那么是的,400个并发用户需要400个线程

在实践中,如果(正如你所说)应用程序没有很多计算密集型功能,那么你可以用更少的内核。如果一个用户计算某个函数需要(比如)200毫秒的时间,那么在任何人注意到显著(例如1秒)延迟之前,您需要在同一线程上的少数用户同时运行该函数。如果不涉及繁重的计算,那么在用户体验受到负面影响之前,更可能的情况是每个线程有几十个并发连接

说到这里,我对ShinyProxy的理解是,它将为每个新连接启动一个新实例,因此并发用户的数量可能会受到内核数量的限制。这一点我不太清楚。然而,如果是这样的话,并且假设模型有几百个连接,但处理需求很少,我认为更好的方法可能是在负载平衡器后面有几个实例。服务器不需要特别强大(无论如何,您只使用一个线程)。每个服务器都可以(我不知道是否有上限)

总而言之,在我看来,ShinyProxy在运行计算密集型应用程序的连接较少时更好,而Shiny Server(甚至是免费版本)在计算简单型应用程序的连接较多时更好

在指定基础设施需求方面,一个好的起点是