gpt4 book ai didi

java - 从应用程序引擎提供缓存数据时的多线程

转载 作者:行者123 更新时间:2023-12-01 05:15:00 26 4
gpt4 key购买 nike

我有一个非常简单的问题,但找不到答案,这让我觉得我很可能遗漏了一些基本事实。

我正在使用 memcache 来缓存和提供大型静态数据,这通常应该使我们能够从单个实例为数千个用户提供服务;但是,由于应用程序引擎是单线程的,因此每个请求都会排队并按顺序提供服务,然后最终在为大量用户提供服务时启动多个实例......

除了延迟之外,尤其是在启动新实例时,这还会导致更大的定价问题。由于 Google 现在按实例小时数而不是 CPU 使用率收费,并且通过提供缓存数据,我们很可能只使用每个实例中可用 CPU 的一小部分,因此需要为许多不必要的额外实例付费,类似于 this发布...

我错过了什么吗?

提前感谢您的回答

最佳答案

如果您通过在 appengine-web.xml 文件中将“threadsafe”元素设置为“true”来启用多线程,则 App Engine 不再是单线程的。

但是,在 MemCache 中缓存数据并不意味着您可以从单个实例处理无限数量的请求。内存缓存不运行您的应用程序代码,它只是让您无需前往数据存储区,因此速度更快。

根据您的代码和内存使用情况等,当 App Engine 发现一个实例(由于多线程而一次服务多个请求)变得“太忙”时,它将启动新实例(这取决于许多仪表板设置以及 appengine-web.xml 中的预热请求设置)以及更新的请求可能由这些设置提供服务。

因此,实例使用情况取决于为传入的请求提供服务的代码的持续时间以及每个实例的内存使用情况 - 而不是 MemCache。

如果通过说“静态数据”,您指的是 html 文件等,通过在 appengine-web.xml 中将它们标记为“静态”,那么实际上您可能根本不需要任何实例。它们由 Google 的内容分发网络(“CDN”)提供服务,无需启动您的实例或运行任何代码。

要实现这一点,客户端请求(例如来自浏览器的请求)将只需要请求静态文件,而不会导致任何应用程序代码运行。

因此,基于所有这些 - 您可能需要重新表述您的问题 - 无论哪种方式,我希望它有所帮助。

关于java - 从应用程序引擎提供缓存数据时的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com