当前位置: 首页 > 面试题库 >

App Engine计划程序何时使用新线程而不是新实例?

张鹏云
2023-03-14
问题内容

如果我threadsafe: trueapp.yaml文件中进行设置,那么什么时候管理创建新实例以服务请求,何时在现有实例上创建新线程的规则是什么?

如果我有一个在每个请求上执行计算量大的应用程序,那么多线程能给我带来什么好处吗?换句话说,实例是多核实例还是单核?

或者,仅当现有线程正在等待IO时才启动新线程吗?


问题答案:

当前使用以下规则集确定给定实例是否可以接受新请求:

if processing more than N concurrent requests (today N=10): false
elif exceeding the soft memory limit: false
elif exceeding the instance class CPU limit: false
elif warming up: false
else true

以下总的CPU /核心限制目前适用于每个实例类:

CLASS 1: 600MHz 1 core
CLASS 2: 1.2GHz 1 core
CLASS 4: 2.4GHz 1 core
CLASS 8: 4.8GHz 2 core

因此,只有一个B8实例可以并行处理最多2个完全由CPU绑定的请求。

为实例类<8设置threadsafe: true(Python)或<threadsafe>true</threadsafe>(Java)将不允许在单个实例上并行处理多个CPU绑定请求。

如果您不完全受CPU约束或不进行I / O,Python和Java运行时将生成新线程以处理新请求,最多可处理10个并发请求。 threadsafe: true

还要注意,即使Go运行时是单线程的,它也支持并发请求:它将为每个请求生成1个goroutine,并在goroutine执行I /
O时在goroutine之间进行控制。



 类似资料:
  • 此答案指示如何将转换为,同时管理将发生阻塞的位置: 我的问题和评论中的问题一样: 怎么了?为什么你使用一个额外的线程与Promise结合? 答复如下: 它会在你拉线的时候卡住线。如果您已经为这样的未来配置了ExecutionContext,这很好,但是默认的ExecutionContext包含的线程与您拥有的处理器一样多。 我不确定我是否理解这个解释。重申: 有什么问题?在未来内部阻塞不是和手动创

  • 我想自动安装/更新我的应用程序。它是spring boot中的web应用程序。用户在自己的服务器上运行此应用程序,而这些服务器通常无法从我的构建服务器访问。 要求 安装简单 更新可以被安排并且自动完成 尽可能少的依赖 在windows服务器和linux上运行 可靠性 当前原型 我们目前的原型是基于docker的。实际上有6个docker图像(我们的应用程序是2个docker、望塔、监控代理、zuu

  • 问题内容: 我同时使用Javafx和线程,并且遇到了这个问题,我制作了一个按钮,然后单击该按钮(使用事件处理程序)时,我做了一个for循环,将按钮更改为1,2,3,4 ,5,然后在每个中间延迟一秒钟。像倒计时! 但是发生的事情是延迟了5秒钟,并将按钮的文本更改为5。 问题是我希望看到它在1到5之间变化,但我看到的只是在5秒延迟结束时为5。我认为它会更改按钮文本,但看不到。我可能与类中的方法有关。

  • 我同时使用Javafx和线程,我经常遇到这个问题,我制作了一个按钮,然后当单击按钮时(使用事件处理程序),我制作了一个for循环,将按钮更改为1、2、3、4、5,然后在每个按钮中间延迟一秒钟。就像倒计时一样! 但实际情况是,它会延迟5秒钟,并将按钮的文本更改为5。 问题是我想看到它在1到5之间变化,但我看到的只是5秒延迟结束时的5。我假设它会更改按钮文本,但我看不到它。我可能不得不处理<代码>。在

  • 希望有人能帮我找出,如果不是一个解决方案,至少是一个行为的解释。 问题: 在一些设备上,按下启动器图标会导致当前任务恢复,在其他设备上,会导致初始启动意图被激发(有效地重新启动应用程序)。为什么会这样? 细节: 当您按下“启动程序图标”时,应用程序会正常启动-也就是说,我假设,使用您的第一个和操作和类别。然而,情况并非总是如此: 在大多数设备上,如果您在应用程序已经运行后按下启动器图标,则会恢复该

  • 我有点匆忙地根据一个使用纱线的教程创建了一个React应用程序。现在我要从头开始重新创建应用程序,因为我对reactstrap库不满意,我想切换到react-bootstrap。 我已经重新安装了node。然而,当我运行CreateReact应用程序时,它说使用“纱线”而不是“npm”,如下所示: 我想使用npm,因为它似乎使用得更广泛,并且有更多基于它的例子。我是被纱线卡住了,还是可以继续使用n