1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-05 19:42:24 +02:00

Add piscina idle timeout

This commit is contained in:
Chocobozzz 2025-05-13 11:24:39 +02:00
parent a29bf7619d
commit 6e40f1f5a0
No known key found for this signature in database
GPG key ID: 583A612D890159BE
2 changed files with 18 additions and 9 deletions

View file

@ -1057,6 +1057,7 @@ export const MEMOIZE_LENGTH = {
export const totalCPUs = Math.max(cpus().length, 1) export const totalCPUs = Math.max(cpus().length, 1)
export const WORKER_THREADS = { export const WORKER_THREADS = {
IDLE_TIMEOUT: 1000 * 10, // 10 seconds
DOWNLOAD_IMAGE: { DOWNLOAD_IMAGE: {
CONCURRENCY: 3, CONCURRENCY: 3,
MAX_THREADS: 1 MAX_THREADS: 1

View file

@ -18,7 +18,8 @@ export function downloadImageFromWorker (options: Parameters<typeof downloadImag
filename: new URL(join('workers', 'image-downloader.js'), import.meta.url).href, filename: new URL(join('workers', 'image-downloader.js'), import.meta.url).href,
concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY, concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS, maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
downloadImageWorker.on('error', err => logger.error('Error in download image worker', { err })) downloadImageWorker.on('error', err => logger.error('Error in download image worker', { err }))
@ -37,7 +38,8 @@ export function processImageFromWorker (options: Parameters<typeof processImage>
filename: new URL(join('workers', 'image-processor.js'), import.meta.url).href, filename: new URL(join('workers', 'image-processor.js'), import.meta.url).href,
concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY, concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY,
maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS, maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
processImageWorker.on('error', err => logger.error('Error in process image worker', { err })) processImageWorker.on('error', err => logger.error('Error in process image worker', { err }))
@ -56,7 +58,8 @@ export function getImageSizeFromWorker (options: Parameters<typeof getImageSize>
filename: new URL(join('workers', 'get-image-size.js'), import.meta.url).href, filename: new URL(join('workers', 'get-image-size.js'), import.meta.url).href,
concurrentTasksPerWorker: WORKER_THREADS.GET_IMAGE_SIZE.CONCURRENCY, concurrentTasksPerWorker: WORKER_THREADS.GET_IMAGE_SIZE.CONCURRENCY,
maxThreads: WORKER_THREADS.GET_IMAGE_SIZE.MAX_THREADS, maxThreads: WORKER_THREADS.GET_IMAGE_SIZE.MAX_THREADS,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
getImageSizeWorker.on('error', err => logger.error('Error in get image size worker', { err })) getImageSizeWorker.on('error', err => logger.error('Error in get image size worker', { err }))
@ -76,7 +79,8 @@ export function parallelHTTPBroadcastFromWorker (options: Parameters<typeof http
// Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs
concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast-parallel'], concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast-parallel'],
maxThreads: 1, maxThreads: 1,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
parallelHTTPBroadcastWorker.on('error', err => logger.error('Error in parallel HTTP broadcast worker', { err })) parallelHTTPBroadcastWorker.on('error', err => logger.error('Error in parallel HTTP broadcast worker', { err }))
@ -98,7 +102,8 @@ export function sequentialHTTPBroadcastFromWorker (
// Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs
concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast'], concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-broadcast'],
maxThreads: 1, maxThreads: 1,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
sequentialHTTPBroadcastWorker.on('error', err => logger.error('Error in sequential HTTP broadcast image worker', { err })) sequentialHTTPBroadcastWorker.on('error', err => logger.error('Error in sequential HTTP broadcast image worker', { err }))
@ -120,7 +125,8 @@ export function httpUnicastFromWorker (
// Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs
concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-unicast'], concurrentTasksPerWorker: JOB_CONCURRENCY['activitypub-http-unicast'],
maxThreads: 1, maxThreads: 1,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
httpUnicastWorker.on('error', err => logger.error('Error in HTTP unicast worker', { err })) httpUnicastWorker.on('error', err => logger.error('Error in HTTP unicast worker', { err }))
@ -141,7 +147,8 @@ export function signJsonLDObjectFromWorker <T> (
filename: new URL(join('workers', 'sign-json-ld-object.js'), import.meta.url).href, filename: new URL(join('workers', 'sign-json-ld-object.js'), import.meta.url).href,
concurrentTasksPerWorker: WORKER_THREADS.SIGN_JSON_LD_OBJECT.CONCURRENCY, concurrentTasksPerWorker: WORKER_THREADS.SIGN_JSON_LD_OBJECT.CONCURRENCY,
maxThreads: WORKER_THREADS.SIGN_JSON_LD_OBJECT.MAX_THREADS, maxThreads: WORKER_THREADS.SIGN_JSON_LD_OBJECT.MAX_THREADS,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
signJsonLDObjectWorker.on('error', err => logger.error('Error in sign JSONLD object worker', { err })) signJsonLDObjectWorker.on('error', err => logger.error('Error in sign JSONLD object worker', { err }))
@ -163,7 +170,8 @@ export function buildDigestFromWorker (
// Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs // Keep it sync with job concurrency so the worker will accept all the requests sent by the parallelized jobs
concurrentTasksPerWorker: WORKER_THREADS.BUILD_DIGEST.CONCURRENCY, concurrentTasksPerWorker: WORKER_THREADS.BUILD_DIGEST.CONCURRENCY,
maxThreads: WORKER_THREADS.BUILD_DIGEST.MAX_THREADS, maxThreads: WORKER_THREADS.BUILD_DIGEST.MAX_THREADS,
minThreads: 1 minThreads: 1,
idleTimeout: WORKER_THREADS.IDLE_TIMEOUT
}) })
buildDigestWorker.on('error', err => logger.error('Error in build digest worker', { err })) buildDigestWorker.on('error', err => logger.error('Error in build digest worker', { err }))