misskey icon indicating copy to clipboard operation
misskey copied to clipboard

Chart Updateが一斉に走って重たくなる

Open mattyatea opened this issue 2 years ago • 1 comments

💡 Summary

Bugではなく仕様だと思われますが、Chartの更新の処理の負荷がとても高くなってしまっています。 あとRaspberry piで動かしているのもあると思いますが....

🥰 Expected Behavior

Chartの更新が走っても重たくならない

🤬 Actual Behavior

Chartの更新が走ると投稿すらできないほど重たくなる

📝 Steps to Reproduce

  1. Chartが更新されるまで待つ。
  2. Chartが更新され始めるとものすごく重たくなる

📌 Environment

Misskey version: v13.9.1

mattyatea avatar Mar 05 '23 07:03 mattyatea

処理を集中させないならこの2つですかね

  • QueueProcessorService.ts で 0:00 になっているジョブの時間をずらす。(0時0分、10分、20分、30分のように)
		this.queueService.systemQueue.add('resyncCharts', {
		}, {
			repeat: { cron: '0 0 * * *' },
			removeOnComplete: true,
		});
	
		this.queueService.systemQueue.add('cleanCharts', {
		}, {
			repeat: { cron: '0 0 * * *' },
			removeOnComplete: true,
		});

		this.queueService.systemQueue.add('aggregateRetention', {
		}, {
			repeat: { cron: '0 0 * * *' },
			removeOnComplete: true,
		});
	
		this.queueService.systemQueue.add('clean', {
		}, {
			repeat: { cron: '0 0 * * *' },
			removeOnComplete: true,
		});
  • ジョブの中でPromise.all() でまとめてやっているのを1個ずつやる。
CleanChartsProcessorService.ts 例

		await Promise.all([
			this.federationChart.clean(),
			this.notesChart.clean(),
			this.usersChart.clean(),
			this.activeUsersChart.clean(),
			this.instanceChart.clean(),
			this.perUserNotesChart.clean(),
			this.perUserPvChart.clean(),
			this.driveChart.clean(),
			this.perUserReactionsChart.clean(),
			this.perUserFollowingChart.clean(),
			this.perUserDriveChart.clean(),
			this.apRequestChart.clean(),
		]);

yszkst avatar Mar 06 '23 14:03 yszkst

リモートのチャート更新を無効にできるオプションが追加され、そのオプションで改善できるのでcloseします

mattyatea avatar Jun 14 '23 17:06 mattyatea