From 728ac5ff72dfd2300ebb80039d41b35013ffab4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 26 Mar 2021 17:47:57 -0400 Subject: [PATCH] perf: increase batch size for notifs, run parallel --- src/notifications.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/notifications.js b/src/notifications.js index 6a31e1b09a..6d6c360304 100644 --- a/src/notifications.js +++ b/src/notifications.js @@ -148,7 +148,7 @@ Notifications.push = async function (notification, uids) { setTimeout(() => { batch.processArray(uids, async (uids) => { await pushToUids(uids, notification); - }, { interval: 1000 }, (err) => { + }, { interval: 1000, batch: 500 }, (err) => { if (err) { winston.error(err.stack); } @@ -164,8 +164,10 @@ async function pushToUids(uids, notification) { const cutoff = Date.now() - notificationPruneCutoff; const unreadKeys = uids.map(uid => `uid:${uid}:notifications:unread`); const readKeys = uids.map(uid => `uid:${uid}:notifications:read`); - await db.sortedSetsAdd(unreadKeys, notification.datetime, notification.nid); - await db.sortedSetsRemove(readKeys, notification.nid); + await Promise.all([ + db.sortedSetsAdd(unreadKeys, notification.datetime, notification.nid), + db.sortedSetsRemove(readKeys, notification.nid), + ]); await db.sortedSetsRemoveRangeByScore(unreadKeys.concat(readKeys), '-inf', cutoff); const websockets = require('./socket.io'); if (websockets.server) {