Google App引擎后端/模块实例中的实际并发



Google App Engine提供任务队列和后端(现在模块)之类的服务,以并行化处理请求并进行"并发工作"。典型的风扇粉丝/叉-Join技术可以轻松地使用管道API,幻想等实现。

在配置后端/模块的硬件时,您可以在B1,B2,B4,B8之间进行选择,但是它对CPU配置中的内核数没有任何说法。也许这里的CPU核心数不相关。后端支持每个传入请求的产卵"背景线程",但是python实际上不能因为著名的GIL(全球解释器锁)而进行真正的并发工作。

一个前端实例将在启动新实例之前处理8个请求(默认,最大30)。

Python 2.7带有ThreadSafe指令据说可以在一个孤立的实例上并行处理传入请求,还是仅在使用真实并发完成的独立实例上传播的启发请求?

在Google App Engine上,从技术上讲实际并发生的实际性,另一方面,推荐的设计模式获得了最真实的并发性和扩展?

您可以使用10-20个居民B8实例进行"手动缩放"后端/模块,每个产卵10英寸"外出"背景线程,并始终进行I/O工作的10个并发异步URL获取,或者应该为I/O工作,或者应该进行。它可以通过动态实例创建来扇出?

Python 2.7带有ThreadSafe指令可以在一个孤立的实例上并行处理传入请求,这是正确的吗?

是的,这是正确的。实际上,它确实在每个实例上运行了多个同时的请求,而不是仅在实例中传播它们。与Java和Go一样(但听起来不是PHP)。通常认为这是一种最佳实践,因为它大大提高了大多数工作量的效率。

这个答案有我看到的有关GAE如何以及何时同时运行请求的最佳细节。

您是对的,Python有一个GIL,该GIL将跨核的并发限制为一定程度,并且对于真正是CPU绑定的工作负载,每个核心的一个以上的线程对您无济于事。但是,绝大多数工作负载是不是 CPU绑定的,尤其是在GAE等平台上的WebApps。它们通常是I/O绑定的,即他们将大部分时间都花在数据存储上,HTTP将其获取到其他服务等。AppEngine使用了阻止时间在同一实例上有效运行其他并发请求的时间。

相关内容

  • 没有找到相关文章

最新更新