summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-04-07 11:27:01 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-04-07 11:27:01 +0900
commit239d3f2dbfb602c20a8bcc89b0be2eeedcc6f3ae (patch)
treee81ae7fdb9318a18b2c8794c4bd341ef9d39bf14
parentfeat(backend): イベント用Redisを別サーバーに分離できるように (diff)
downloadsharkey-239d3f2dbfb602c20a8bcc89b0be2eeedcc6f3ae.tar.gz
sharkey-239d3f2dbfb602c20a8bcc89b0be2eeedcc6f3ae.tar.bz2
sharkey-239d3f2dbfb602c20a8bcc89b0be2eeedcc6f3ae.zip
feat(backend): ジョブキュー用Redisを別サーバーに分離できるように
-rw-r--r--.config/docker_example.yml8
-rw-r--r--.config/example.yml8
-rw-r--r--.devcontainer/devcontainer.yml8
-rw-r--r--CHANGELOG.md1
-rw-r--r--chart/files/default.yml8
-rw-r--r--packages/backend/src/config.ts11
-rw-r--r--packages/backend/src/core/QueueModule.ts12
7 files changed, 50 insertions, 6 deletions
diff --git a/.config/docker_example.yml b/.config/docker_example.yml
index 13ecfac549..d93cc8b70e 100644
--- a/.config/docker_example.yml
+++ b/.config/docker_example.yml
@@ -70,6 +70,14 @@ redis:
# #prefix: example-prefix
# #db: 1
+#redisForJobQueue:
+# host: redis
+# port: 6379
+# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
+# #pass: example-pass
+# #prefix: example-prefix
+# #db: 1
+
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
diff --git a/.config/example.yml b/.config/example.yml
index fbdb7b0241..b61ed14809 100644
--- a/.config/example.yml
+++ b/.config/example.yml
@@ -70,6 +70,14 @@ redis:
# #prefix: example-prefix
# #db: 1
+#redisForJobQueue:
+# host: localhost
+# port: 6379
+# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
+# #pass: example-pass
+# #prefix: example-prefix
+# #db: 1
+
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
diff --git a/.devcontainer/devcontainer.yml b/.devcontainer/devcontainer.yml
index 4cc7ae3b59..1350e70157 100644
--- a/.devcontainer/devcontainer.yml
+++ b/.devcontainer/devcontainer.yml
@@ -70,6 +70,14 @@ redis:
# #prefix: example-prefix
# #db: 1
+#redisForJobQueue:
+# host: redis
+# port: 6379
+# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
+# #pass: example-pass
+# #prefix: example-prefix
+# #db: 1
+
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28be3faff9..03cf179a86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -36,6 +36,7 @@
### Server
- イベント用Redisを別サーバーに分離できるように
+- ジョブキュー用Redisを別サーバーに分離できるように
- サーバーの全体的なパフォーマンスを向上
- ノート作成時のパフォーマンスを向上
- アンテナのタイムライン取得時のパフォーマンスを向上
diff --git a/chart/files/default.yml b/chart/files/default.yml
index afaf8a162d..1d8e5b490a 100644
--- a/chart/files/default.yml
+++ b/chart/files/default.yml
@@ -91,6 +91,14 @@ redis:
# #prefix: example-prefix
# #db: 1
+#redisForJobQueue:
+# host: localhost
+# port: 6379
+# #family: 0 # 0=Both, 4=IPv4, 6=IPv6
+# #pass: example-pass
+# #prefix: example-prefix
+# #db: 1
+
# ┌─────────────────────────────┐
#───┘ Elasticsearch configuration └─────────────────────────────
diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts
index e8554e5c84..fd2b83cf2a 100644
--- a/packages/backend/src/config.ts
+++ b/packages/backend/src/config.ts
@@ -41,6 +41,14 @@ export type Source = {
db?: number;
prefix?: string;
};
+ redisForJobQueue?: {
+ host: string;
+ port: number;
+ family?: number;
+ pass: string;
+ db?: number;
+ prefix?: string;
+ };
elasticsearch: {
host: string;
port: number;
@@ -99,6 +107,8 @@ export type Mixin = {
mediaProxy: string;
externalMediaProxyEnabled: boolean;
videoThumbnailGenerator: string | null;
+ redisForPubsub: NonNullable<Source['redisForPubsub']>;
+ redisForJobQueue: NonNullable<Source['redisForJobQueue']>;
};
export type Config = Source & Mixin;
@@ -160,6 +170,7 @@ export function loadConfig() {
if (!config.redis.prefix) config.redis.prefix = mixin.host;
if (config.redisForPubsub == null) config.redisForPubsub = config.redis;
+ if (config.redisForJobQueue == null) config.redisForJobQueue = config.redis;
return Object.assign(config, mixin);
}
diff --git a/packages/backend/src/core/QueueModule.ts b/packages/backend/src/core/QueueModule.ts
index edd843977b..8733a7d7eb 100644
--- a/packages/backend/src/core/QueueModule.ts
+++ b/packages/backend/src/core/QueueModule.ts
@@ -8,13 +8,13 @@ import type { DeliverJobData, InboxJobData, DbJobData, ObjectStorageJobData, End
function q<T>(config: Config, name: string, limitPerSec = -1) {
return new Bull<T>(name, {
redis: {
- port: config.redis.port,
- host: config.redis.host,
- family: config.redis.family == null ? 0 : config.redis.family,
- password: config.redis.pass,
- db: config.redis.db ?? 0,
+ port: config.redisForJobQueue.port,
+ host: config.redisForJobQueue.host,
+ family: config.redisForJobQueue.family == null ? 0 : config.redisForJobQueue.family,
+ password: config.redisForJobQueue.pass,
+ db: config.redisForJobQueue.db ?? 0,
},
- prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue',
+ prefix: config.redisForJobQueue.prefix ? `${config.redisForJobQueue.prefix}:queue` : 'queue',
limiter: limitPerSec > 0 ? {
max: limitPerSec,
duration: 1000,