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

我有一个在Azure免费网站上运行的NodeJS服务器。 服务器安装了websocket模块。 每个连接的用户将caching一些对象的数据,以便任何连接的人可以从这个对象中检索caching的数据。 我遇到的问题是,服务器似乎并没有把这个对象保持很长时间。 我可以在一段时间内访问数据,但如果我在当天晚些时候尝试,它只是消失了。

Azure是否正在closures服务器,因为它没有任何活动,导致对象被释放? 如果NodeJS在一段时间之后没有使用它们,是否会释放对象?

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

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

使用基本/标准层级网站,您可以启用“始终开启”。 您将在“configuration”选项卡下看到此选项:

正如Ben在他的回答中指出的那样,Azure网站将会驱赶闲置的网站。 由于您的网站与其他几个租户在同一个VM实例上共享资源,所以对于免费/共享层来说尤其如此。 但即使是基本的和标准的层次,也可能需要驱逐你的网站(特别是因为你可以有许多自己的网站运行在一个单一的托pipe计划)。

使用基本/标准层级网站,您可以启用“ 始终开启” 。 您将在“ configuration”选项卡下看到此选项:

在这里输入图像说明

一旦你启用这个,你的网站应该保持加载。