Microsoft Azure 免费网站问题(NodeJS 服务器)

Microsoft Azure free website issue (NodeJS server)

我在 Azure 免费网站上有一个 NodeJS 服务器 运行。服务器安装了 websocket 模块。每个连接的用户都会用一个对象缓存一些数据,这样任何其他连接的人都可以从这个对象中检索缓存的数据。我遇到的问题是服务器似乎不会长时间保留此对象。我可以使用 in 访问数据一段时间,但如果我在当天晚些时候尝试,它就会消失。

Azure 是否正在关闭服务器,因为它没有 activity,导致对象被释放?如果对象在一段时间后未被使用,NodeJS 是否会释放它们?

是的。如果没有对应用程序池的任何请求,Azure 网站将停止你的应用程序。这意味着记忆中的任何东西都丢失了。您可以设置一个 cron 作业或计划任务来 ping 您的网络应用程序,以避免应用程序池因不活动而超时。

编辑:或者,正如 David Makogon 指出的那样,

With basic/standard tier websites, you have the ability to enable Always On. You'll see this option under the Configure tab:

正如 Ben 在他的回答中指出的那样,Azure 网站将驱逐闲置网站。对于 free/shared 层尤其如此,因为您的网站正在与同一 VM 实例上的多个其他租户共享资源。但即使是基本和标准层,也可能需要驱逐您的网站(尤其是因为您可以在一个托管计划中拥有许多自己的网站 运行)。

对于 basic/standard 层网站,您可以启用 Always On。您将在 配置 选项卡下看到此选项:

启用此功能后,您的网站应保持加载状态。