anbaric 1.68.2 → 1.68.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/README.md +1 -1
- package/docs/features/deploying.md +3 -3
- package/docs/patterns/memory.md +7 -7
- package/package.json +5 -5
package/docs/README.md
CHANGED
|
@@ -44,7 +44,7 @@ How to put the features together to build something real.
|
|
|
44
44
|
- [Integrating external systems](patterns/integrating-external-systems.md) — waiting on callbacks and webhooks
|
|
45
45
|
- [Authorization with actors and roles](patterns/authorization.md) — who is allowed to do what
|
|
46
46
|
- [UX practices](patterns/ux-practices.md) — feedback and polling for an asynchronous UI
|
|
47
|
-
- [Staying within memory](patterns/memory.md) — the
|
|
47
|
+
- [Staying within memory](patterns/memory.md) — the 1 GB footprint, and not turning the process into a cache
|
|
48
48
|
- [Testing your app](patterns/testing.md) — driving a machine in memory
|
|
49
49
|
|
|
50
50
|
## API reference
|
|
@@ -49,14 +49,14 @@ anbaric jobs watch <job-id> # follow a job as it progresses
|
|
|
49
49
|
so your code is identical locally and in the cloud. **Never set these
|
|
50
50
|
yourself.** See [Environment and factories](../api/environment.md).
|
|
51
51
|
- **A fixed footprint.** Each app runs in its own container with **0.25 vCPU
|
|
52
|
-
and
|
|
52
|
+
and 1 GB of memory**, shared between your process and the small launcher
|
|
53
53
|
beside it. Node sizes its heap from that limit, so your code gets a heap of
|
|
54
|
-
roughly **
|
|
54
|
+
roughly **510 MB** before it is out of memory. That is plenty for a workflow
|
|
55
55
|
app whose steps call services and move a job on; it is not enough to hold
|
|
56
56
|
thousands of jobs, a whole dataset or a large file in memory at once. See
|
|
57
57
|
[Staying within memory](../patterns/memory.md) for what to do instead and
|
|
58
58
|
how an out-of-memory crash shows up. Every app starts small; one that needs
|
|
59
|
-
more can be switched to a **large** instance (faster compute,
|
|
59
|
+
more can be switched to a **large** instance (faster compute, 2× the memory,
|
|
60
60
|
$50/£50 a month instead of $20/£20, and not covered by the free allowance)
|
|
61
61
|
on the console's Manage apps page. Deploying never asks about size.
|
|
62
62
|
|
package/docs/patterns/memory.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Staying within memory
|
|
2
2
|
|
|
3
|
-
A deployed app gets **
|
|
4
|
-
your code a heap of roughly **
|
|
3
|
+
A deployed app gets **1 GB** of memory and a quarter of a vCPU, and Node gives
|
|
4
|
+
your code a heap of roughly **510 MB** of that. This is a deliberate shape: an
|
|
5
5
|
Anbaric app is a set of small steps that each read a job, do one thing and
|
|
6
6
|
record the result. The job's data lives in the platform, not in your process,
|
|
7
7
|
so a well-shaped app rarely needs more than a few tens of megabytes however
|
|
@@ -20,7 +20,7 @@ Two different limits, two different symptoms:
|
|
|
20
20
|
collector that stopped working: the collector only frees what nothing refers
|
|
21
21
|
to any more.
|
|
22
22
|
- **The container limit.** Buffers and native memory live outside the heap. If
|
|
23
|
-
they take the container past
|
|
23
|
+
they take the container past 1 GB the container is killed outright, with no
|
|
24
24
|
stack trace: `anbaric app status <name>` shows the task stopped with
|
|
25
25
|
`OutOfMemoryError: Container killed due to memory usage`.
|
|
26
26
|
|
|
@@ -92,18 +92,18 @@ Your app serves HTTP as well as running steps, and the two share the heap.
|
|
|
92
92
|
|
|
93
93
|
## When you need to know
|
|
94
94
|
|
|
95
|
-
`process.memoryUsage()` is the honest answer: `heapUsed` against the ~
|
|
96
|
-
heap, `rss` against
|
|
95
|
+
`process.memoryUsage()` is the honest answer: `heapUsed` against the ~510 MB
|
|
96
|
+
heap, `rss` against 1 GB. Logging it at the start and end of a suspect step
|
|
97
97
|
tells you in one run whether the step is the problem. If `heapUsed` climbs
|
|
98
98
|
across steps and never comes back down, something is holding on; if a single
|
|
99
99
|
step spikes, that step needs breaking up.
|
|
100
100
|
|
|
101
101
|
If a workload genuinely needs more — a large model run, a heavy transform — an
|
|
102
102
|
app can be moved to a **large** instance from the console's Manage apps page:
|
|
103
|
-
faster compute and
|
|
103
|
+
faster compute and twice the memory (2 GB, so a heap of roughly 1 GB),
|
|
104
104
|
for $50/£50 a month instead of $20/£20, paid from its first day (the free
|
|
105
105
|
allowance covers small apps only). It is the right answer for one heavy app;
|
|
106
|
-
it is not the answer to a leak, which will fill 2 GB as surely as
|
|
106
|
+
it is not the answer to a leak, which will fill 2 GB as surely as 1 GB.
|
|
107
107
|
|
|
108
108
|
## See also
|
|
109
109
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "anbaric",
|
|
3
|
-
"version": "1.68.
|
|
3
|
+
"version": "1.68.3",
|
|
4
4
|
"description": "Everything needed to write an Anbaric app: state machines, jobs, document and secret stores, local in-memory implementations and the Anbaric Cloud clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"prepublishOnly": "npm run build"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"anbaric-impl-cloud": "^1.68.
|
|
28
|
-
"anbaric-data-store": "^1.68.
|
|
29
|
-
"anbaric-state-machine": "^1.68.
|
|
30
|
-
"anbaric-tsapi": "^1.68.
|
|
27
|
+
"anbaric-impl-cloud": "^1.68.3",
|
|
28
|
+
"anbaric-data-store": "^1.68.3",
|
|
29
|
+
"anbaric-state-machine": "^1.68.3",
|
|
30
|
+
"anbaric-tsapi": "^1.68.3"
|
|
31
31
|
}
|
|
32
32
|
}
|