Default autoscaling empty duration to fifteen minutes
This commit is contained in:
@@ -8,7 +8,7 @@ T5 game-wide policies cover the ten standard Zombies maps. Dead Ops Arcade is no
|
|||||||
|
|
||||||
## Configure a policy
|
## Configure a policy
|
||||||
|
|
||||||
Choose **Add policy**, select the game and scope, and enter an explicit maximum. The initial editor selects Off, with a minimum of one running lobby, one empty spare, and a 20-minute empty interval. Counts must be between 1 and 20; the minimum and spare target cannot exceed the maximum.
|
Choose **Add policy**, select the game and scope, and enter an explicit maximum. The initial editor selects Off, with a minimum of one running lobby, one empty spare, and a 15-minute empty interval. Counts must be between 1 and 20; the minimum and spare target cannot exceed the maximum.
|
||||||
|
|
||||||
Choose **Preview changes** to inspect the existing lobbies, game key availability, target, proposed action, and blockers. **Save reviewed policy** checks the policy revision and current fleet again. If the preview changed, review a new preview before saving.
|
Choose **Preview changes** to inspect the existing lobbies, game key availability, target, proposed action, and blockers. **Save reviewed policy** checks the policy revision and current fleet again. If the preview changed, review a new preview before saving.
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ Use one policy per `(game, mapSlug)`, preserving configured variants such as T6
|
|||||||
| Minimum running lobbies | Default 1; a floor for desired ready capacity, subject to available keys and host capacity. |
|
| Minimum running lobbies | Default 1; a floor for desired ready capacity, subject to available keys and host capacity. |
|
||||||
| Maximum lobbies | Required explicit limit, at most 20. Count occupied lobbies, registered identities, reservations, and unresolved creations toward admission. |
|
| Maximum lobbies | Required explicit limit, at most 20. Count occupied lobbies, registered identities, reservations, and unresolved creations toward admission. |
|
||||||
| Empty spare target | Default 1. Count empty ready lobbies, not unfilled player slots. |
|
| Empty spare target | Default 1. Count empty ready lobbies, not unfilled player slots. |
|
||||||
| Empty duration before removal | Default 20 minutes; adjustable after the pilot. |
|
| Empty duration before removal | Default 15 minutes; adjustable after the pilot. |
|
||||||
| Action cooldown | Default 5 minutes between new policy actions, measured from durable admission. Cancellation and safety checks do not wait for cooldown. |
|
| Action cooldown | Default 5 minutes between new policy actions, measured from durable admission. Cancellation and safety checks do not wait for cooldown. |
|
||||||
| Launch settings | Reuse normal map recipes and automatic placement on eligible active hosts. Use current promoted files when provisioning begins. |
|
| Launch settings | Reuse normal map recipes and automatic placement on eligible active hosts. Use current promoted files when provisioning begins. |
|
||||||
|
|
||||||
|
|||||||
@@ -52,5 +52,5 @@ export function scalingSettings(input: unknown): ScalingSettings {
|
|||||||
const minimum = integer('minimum', 1, 20), maximum = integer('maximum', undefined, 20), spares = integer('spares', 1, 20);
|
const minimum = integer('minimum', 1, 20), maximum = integer('maximum', undefined, 20), spares = integer('spares', 1, 20);
|
||||||
if (minimum > maximum || spares > maximum) throw new Error('Minimum and spare target cannot exceed the maximum.');
|
if (minimum > maximum || spares > maximum) throw new Error('Minimum and spare target cannot exceed the maximum.');
|
||||||
return { game, mapSlug, mode: mode as AutoscalingMode, minimum, maximum, spares,
|
return { game, mapSlug, mode: mode as AutoscalingMode, minimum, maximum, spares,
|
||||||
emptyMinutes: integer('emptyMinutes', 20, 1440) };
|
emptyMinutes: integer('emptyMinutes', 15, 1440) };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
let snapshot = $state<ScalingReport | null>(null);
|
let snapshot = $state<ScalingReport | null>(null);
|
||||||
const report = $derived(snapshot ?? data.autoscaling);
|
const report = $derived(snapshot ?? data.autoscaling);
|
||||||
const canOperate = $derived(page.data.user?.role === 'admin' || page.data.user?.role === 'operator');
|
const canOperate = $derived(page.data.user?.role === 'admin' || page.data.user?.role === 'operator');
|
||||||
const defaults = (): ScalingSettings => ({ game: 't5', mapSlug: 'theater', mode: 'off', minimum: 1, maximum: 3, spares: 1, emptyMinutes: 20 });
|
const defaults = (): ScalingSettings => ({ game: 't5', mapSlug: 'theater', mode: 'off', minimum: 1, maximum: 3, spares: 1, emptyMinutes: 15 });
|
||||||
let settings = $state<ScalingSettings>(defaults());
|
let settings = $state<ScalingSettings>(defaults());
|
||||||
let editing = $state<ScalingPolicy | null>(null);
|
let editing = $state<ScalingPolicy | null>(null);
|
||||||
let editorOpen = $state(false);
|
let editorOpen = $state(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user