Skip to content
Snippets Groups Projects
Unverified Commit bb2db1cf authored by MeiMei's avatar MeiMei Committed by GitHub
Browse files

perf: Tune AP job queue timings (#7635)


* perf: Tune AP job queue timings

* CHANGELOG

* chore: add reference

Co-authored-by: default avatarsyuilo <Syuilotan@yahoo.co.jp>
parent 0e690914
No related branches found
No related tags found
No related merge requests found
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
### Improvements ### Improvements
- 依存関係の更新 - 依存関係の更新
- localStorageのaccountsはindexedDBで保持するように - localStorageのaccountsはindexedDBで保持するように
- ActivityPub: ジョブキューの試行タイミングを調整 (#7635)
### Bugfixes ### Bugfixes
- チャンネルを作成しているとアカウントを削除できないのを修正 - チャンネルを作成しているとアカウントを削除できないのを修正
......
...@@ -73,8 +73,7 @@ export function deliver(user: ThinUser, content: unknown, to: string | null) { ...@@ -73,8 +73,7 @@ export function deliver(user: ThinUser, content: unknown, to: string | null) {
attempts: config.deliverJobMaxAttempts || 12, attempts: config.deliverJobMaxAttempts || 12,
timeout: 1 * 60 * 1000, // 1min timeout: 1 * 60 * 1000, // 1min
backoff: { backoff: {
type: 'exponential', type: 'apBackoff'
delay: 60 * 1000
}, },
removeOnComplete: true, removeOnComplete: true,
removeOnFail: true removeOnFail: true
...@@ -91,8 +90,7 @@ export function inbox(activity: IActivity, signature: httpSignature.IParsedSigna ...@@ -91,8 +90,7 @@ export function inbox(activity: IActivity, signature: httpSignature.IParsedSigna
attempts: config.inboxJobMaxAttempts || 8, attempts: config.inboxJobMaxAttempts || 8,
timeout: 5 * 60 * 1000, // 5min timeout: 5 * 60 * 1000, // 5min
backoff: { backoff: {
type: 'exponential', type: 'apBackoff'
delay: 60 * 1000
}, },
removeOnComplete: true, removeOnComplete: true,
removeOnFail: true removeOnFail: true
......
...@@ -11,8 +11,23 @@ export function initialize<T>(name: string, limitPerSec = -1) { ...@@ -11,8 +11,23 @@ export function initialize<T>(name: string, limitPerSec = -1) {
}, },
prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue', prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue',
limiter: limitPerSec > 0 ? { limiter: limitPerSec > 0 ? {
max: limitPerSec * 5, max: limitPerSec,
duration: 5000 duration: 1000
} : undefined } : undefined,
settings: {
backoffStrategies: {
apBackoff
}
}
}); });
} }
// ref. https://github.com/misskey-dev/misskey/pull/7635#issue-971097019
function apBackoff(attemptsMade: number, err: Error) {
const baseDelay = 60 * 1000; // 1min
const maxBackoff = 8 * 60 * 60 * 1000; // 8hours
let backoff = (Math.pow(2, attemptsMade) - 1) * baseDelay;
backoff = Math.min(backoff, maxBackoff);
backoff += Math.round(backoff * Math.random() * 0.2);
return backoff;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment