This repository has been archived by the owner on Oct 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathroleconfig.yaml
111 lines (107 loc) · 2.79 KB
/
roleconfig.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
id: roleconfig.json
"$schema": "http://json-schema.org/draft-04/schema"
title: Role configuration
description: "Configuration of a single role"
type:
- object
required: []
properties:
# worker/processing characteristics
processing:
type: number
description: 'Mean job processing time'
unit: seconds
default: 10.0
shorthand: p
stddev:
type: number
description: 'Standard deviation (1σ) of job processing time: 68% completed within -+ this.'
unit: seconds
default: '50% of mean processing time'
deadline:
type: number
shorthand: d
description: 'Time practically all jobs should be completed within.'
unit: seconds
default: 60.0
boot:
type: number
description: "Mean boot time for worker. From sending scale up message to processing jobs"
unit: seconds
default: 30.0
concurrency:
type: number
description: 'Number of concurrent jobs the worker processes (prefetch in AMQP)'
default: 1.0
unit: 'jobs'
dynosize:
type: string
description: "Heroku dyno size used for the worker"
example: 'perf-m'
default: 'standard-1x'
# worker limits
minimum:
type: number
shorthand: min
description: 'Minimum amount of workers'
unit: 'workers'
default: 1.0
maximum:
type: number
shorthand: max
description: 'Minimum amount of workers'
unit: 'workers'
default: 5.0
# names
worker:
type: string
description: 'Worker name (dyno role)'
shorthand: 'w'
default: 'role name'
queue:
type: string
description: 'Queue name'
default: 'role name'
shorthand: q
app:
type: string
description: 'Application name (ie on Heroku)'
default: 'GUV_APP envvar'
# FIXME, broker url should be url scheme, not just string
broker:
type: string
description: 'Broker (ie RabbitMQ) URL'
default: 'CLOUDAMQP_URL or GUV_BROKER envvar'
apikey:
type: string
description: 'Heroku API key'
default: 'HEROKU_API_KEY envvar'
# http://statuspage.io integration
statuspage:
type: string
description: 'Page id (for statuspage.io)'
default: 'STATUSPAGE_ID envvar'
metric:
type: string
description: 'Metric id (for statuspage.io)'
# derived/advanced process parameters
percentile:
type: number
unit: '%'
description: "Percentile of jobs that should happen within $deadline"
default: 99
target:
type: number
unit: seconds
description: 'Calculated based on process time and variance, to meet percentile and deadline.'
pollinterval:
type: number
unit: seconds
default: 30.0
description: 'How often to poll RabbitMQ, and possibly make changes'
history:
type: number
unit: seconds
description: 'How long history to consider, before scaling workers down'
default: 120.0