parent
							
								
									46aaf8fa9a
								
							
						
					
					
						commit
						84178ba38a
					
				
					 3 changed files with 22 additions and 6 deletions
				
			
		|  | @ -125,6 +125,14 @@ autoAdmin: true | |||
| # deliverJobConcurrency: 128 | ||||
| # inboxJobConcurrency: 16 | ||||
| 
 | ||||
| # Job rate limiter | ||||
| # deliverJobPerSec: 128 | ||||
| # inboxJobPerSec: 16 | ||||
| 
 | ||||
| # Job attempts | ||||
| # deliverJobMaxAttempts: 12 | ||||
| # inboxJobMaxAttempts: 8 | ||||
| 
 | ||||
| # IP address family used for outgoing request (ipv4, ipv6 or dual) | ||||
| #outgoingAddressFamily: ipv4 | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,6 +47,10 @@ export type Source = { | |||
| 
 | ||||
| 	deliverJobConcurrency?: number; | ||||
| 	inboxJobConcurrency?: number; | ||||
| 	deliverJobPerSec?: number; | ||||
| 	inboxJobPerSec?: number; | ||||
| 	deliverJobMaxAttempts?: number; | ||||
| 	inboxJobMaxAttempts?: number; | ||||
| 
 | ||||
| 	syslog: { | ||||
| 		host: string; | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ import { queueLogger } from './logger'; | |||
| import { DriveFile } from '../models/entities/drive-file'; | ||||
| import { getJobInfo } from './get-job-info'; | ||||
| 
 | ||||
| function initializeQueue(name: string) { | ||||
| function initializeQueue(name: string, limitPerSec = -1) { | ||||
| 	return new Queue(name, { | ||||
| 		redis: { | ||||
| 			port: config.redis.port, | ||||
|  | @ -21,7 +21,11 @@ function initializeQueue(name: string) { | |||
| 			password: config.redis.pass, | ||||
| 			db: config.redis.db || 0, | ||||
| 		}, | ||||
| 		prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue' | ||||
| 		prefix: config.redis.prefix ? `${config.redis.prefix}:queue` : 'queue', | ||||
| 		limiter: limitPerSec > 0 ? { | ||||
| 			max: limitPerSec * 5, | ||||
| 			duration: 5000 | ||||
| 		} : undefined | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
|  | @ -33,8 +37,8 @@ function renderError(e: Error): any { | |||
| 	}; | ||||
| } | ||||
| 
 | ||||
| export const deliverQueue = initializeQueue('deliver'); | ||||
| export const inboxQueue = initializeQueue('inbox'); | ||||
| export const deliverQueue = initializeQueue('deliver', config.deliverJobPerSec || 128); | ||||
| export const inboxQueue = initializeQueue('inbox', config.inboxJobPerSec || 16); | ||||
| export const dbQueue = initializeQueue('db'); | ||||
| export const objectStorageQueue = initializeQueue('objectStorage'); | ||||
| 
 | ||||
|  | @ -85,7 +89,7 @@ export function deliver(user: ILocalUser, content: any, to: any) { | |||
| 	}; | ||||
| 
 | ||||
| 	return deliverQueue.add(data, { | ||||
| 		attempts: 8, | ||||
| 		attempts: config.deliverJobMaxAttempts || 12, | ||||
| 		backoff: { | ||||
| 			type: 'exponential', | ||||
| 			delay: 60 * 1000 | ||||
|  | @ -102,7 +106,7 @@ export function inbox(activity: any, signature: httpSignature.IParsedSignature) | |||
| 	}; | ||||
| 
 | ||||
| 	return inboxQueue.add(data, { | ||||
| 		attempts: 8, | ||||
| 		attempts: config.inboxJobMaxAttempts || 8, | ||||
| 		backoff: { | ||||
| 			type: 'exponential', | ||||
| 			delay: 1000 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue