我们云引擎应用里面有一个定时器,每次重启后会执行。 我们发现实例有时重启后, 会有两个定时器在运行。 请问这个是怎么回事? 是不是实例重启时/后还有另外一个临时的实例在运行??@jysperm, @kadashu
定时器是指 setInterval 么?在部署、重启时(包括系统自动进行的迁移等操作),是会有大概 30 秒左右的时间新旧进程同时运行的。
是的。 setInterval. 不止30秒,大概10分钟估计都有。 可以调整下吗? 目前时间太长了, 我们后台逻辑会被执行两次,有些客户订单会被处理两次包括计费, 影响很大。谢谢。@jysperm.
我检查了一下,现在你的云引擎只有两个正在运行的实例,web1 和 websocket1。这个部署机制肯定是不会改的,建议还是在业务上避免重复运行,或者用我们提供的定时任务功能(控制台 -> 云引擎 -> 定时任务)。另外提醒一下如果你各个分组、环境(预备环境)运行的是同一套代码的话,也会发生你说的这种情况。
websocket1执行的是另外的代码,那个没关系的。 我们现在基本不实用预备环境,大部分它都是处于休眠状态。 我们直接部署也是部署到生产环境。 请问这个怎么消除这个的影响? @jysperm
业务上把正在处理和处理过的订单标记一下,避免重复处理,或者用我们提供的定时任务功能(控制台 -> 云引擎 -> 定时任务),创建的时候记得勾选「异常处理策略:放弃」。
你们的定时器只是适用于云函数吧。 我们并没有用云函数。 我了解你们目前的部署机制, 现在我想说的就是10多分钟两个进程时间太久。 可不可以缩短?
我们的设计上是会新旧实例同时运行 30 秒,没有 10 分钟那么久。
我观察到几次肯定不止。 我们在监控下,有问题的话到时再告诉你这边吧。 谢谢了。