[英]Does setTimeout function affect the performance of Node.js application?
我有一个订票请求处理程序:
route.post('/makeBooking', (req, res) => {
// Booking code
setTimeout(function () {
// Checks if the payment is made, if not then cancels the booking
}, 900000);
});
现在我有一条预订路线,如果未在 15 分钟内付款,超时功能将取消预订。
此功能会导致任何与性能相关的问题或内存泄漏吗?
此功能是否会导致任何与性能相关的问题...
不,它不会,至少它本身不会。 虽然setTimeout
正在等待调用它的回调,但它是非阻塞的。 呼叫被简单地添加到队列中。 在将来的某个时刻,回调会触发,并且该调用将从该队列中删除。
同时,您仍然可以处理内容。
……还是内存泄漏?
setTimeout
回调位于闭包内。 一旦setTimeout
调用回调,它就可以进行垃圾回收。
除非您在 900000 毫秒的时间范围内获得数百万次预订,否则您无需担心; 当然,数量取决于您分配给 Node.js 应用程序的内存大小。
当然,如果您每秒收到那么多请求,那么您还有其他更重要的事情需要担心。
它不会有性能问题或内存泄漏问题,但使用 15 分钟超时功能可能会导致调试和维护问题。
特别是取消预订之类的事情应该以另一种方式解决。
您始终应该以以下方式编写您的节点应用程序:
因此,假设您已经在预订过程中使用了数据库,那么您还应该在数据库中进行 15 分钟计时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.