@crawlee/core 3.16.1-beta.33 → 3.16.1-beta.35

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.
Files changed (38) hide show
  1. package/autoscaling/autoscaled_pool.d.ts +2 -0
  2. package/autoscaling/autoscaled_pool.d.ts.map +1 -1
  3. package/autoscaling/autoscaled_pool.js +10 -0
  4. package/autoscaling/autoscaled_pool.js.map +1 -1
  5. package/autoscaling/client_load_signal.d.ts +26 -0
  6. package/autoscaling/client_load_signal.d.ts.map +1 -0
  7. package/autoscaling/client_load_signal.js +40 -0
  8. package/autoscaling/client_load_signal.js.map +1 -0
  9. package/autoscaling/cpu_load_signal.d.ts +29 -0
  10. package/autoscaling/cpu_load_signal.d.ts.map +1 -0
  11. package/autoscaling/cpu_load_signal.js +27 -0
  12. package/autoscaling/cpu_load_signal.js.map +1 -0
  13. package/autoscaling/event_loop_load_signal.d.ts +24 -0
  14. package/autoscaling/event_loop_load_signal.d.ts.map +1 -0
  15. package/autoscaling/event_loop_load_signal.js +39 -0
  16. package/autoscaling/event_loop_load_signal.js.map +1 -0
  17. package/autoscaling/index.d.ts +5 -0
  18. package/autoscaling/index.d.ts.map +1 -1
  19. package/autoscaling/index.js +5 -0
  20. package/autoscaling/index.js.map +1 -1
  21. package/autoscaling/load_signal.d.ts +100 -0
  22. package/autoscaling/load_signal.d.ts.map +1 -0
  23. package/autoscaling/load_signal.js +151 -0
  24. package/autoscaling/load_signal.js.map +1 -0
  25. package/autoscaling/memory_load_signal.d.ts +44 -0
  26. package/autoscaling/memory_load_signal.d.ts.map +1 -0
  27. package/autoscaling/memory_load_signal.js +159 -0
  28. package/autoscaling/memory_load_signal.js.map +1 -0
  29. package/autoscaling/snapshotter.d.ts +27 -63
  30. package/autoscaling/snapshotter.d.ts.map +1 -1
  31. package/autoscaling/snapshotter.js +77 -243
  32. package/autoscaling/snapshotter.js.map +1 -1
  33. package/autoscaling/system_status.d.ts +20 -32
  34. package/autoscaling/system_status.d.ts.map +1 -1
  35. package/autoscaling/system_status.js +46 -92
  36. package/autoscaling/system_status.js.map +1 -1
  37. package/index.mjs +6 -0
  38. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load_signal.js","sourceRoot":"","sources":["../../src/autoscaling/load_signal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { Log } from '@apify/log';
2
+ import type { Configuration } from '../configuration';
3
+ import type { LoadSignal, LoadSnapshot } from './load_signal';
4
+ import type { SystemInfo } from './system_status';
5
+ export interface MemorySnapshot extends LoadSnapshot {
6
+ usedBytes?: number;
7
+ }
8
+ export interface MemoryLoadSignalOptions {
9
+ maxUsedMemoryRatio?: number;
10
+ overloadedRatio?: number;
11
+ snapshotHistoryMillis?: number;
12
+ config: Configuration;
13
+ log?: Log;
14
+ }
15
+ /**
16
+ * Tracks memory usage via `SYSTEM_INFO` events and reports overload when
17
+ * the used-to-available memory ratio exceeds a threshold.
18
+ */
19
+ export declare class MemoryLoadSignal implements LoadSignal {
20
+ readonly name = "memInfo";
21
+ readonly overloadedRatio: number;
22
+ private readonly store;
23
+ private readonly config;
24
+ private readonly events;
25
+ private readonly log;
26
+ private readonly maxUsedMemoryRatio;
27
+ private maxMemoryRatio;
28
+ private maxMemoryBytes;
29
+ private lastLoggedCriticalMemoryOverloadAt;
30
+ constructor(options: MemoryLoadSignalOptions);
31
+ start(): Promise<void>;
32
+ stop(): Promise<void>;
33
+ getSample(sampleDurationMillis?: number): MemorySnapshot[];
34
+ /**
35
+ * Returns typed memory snapshots for backward compatibility with `Snapshotter`.
36
+ */
37
+ getMemorySnapshots(): MemorySnapshot[];
38
+ /** @internal */
39
+ _onSystemInfo(systemInfo: SystemInfo): void;
40
+ /** @internal */
41
+ _memoryOverloadWarning(systemInfo: SystemInfo, maxMemoryBytes?: number): void;
42
+ private _getTotalMemoryBytes;
43
+ }
44
+ //# sourceMappingURL=memory_load_signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory_load_signal.d.ts","sourceRoot":"","sources":["../../src/autoscaling/memory_load_signal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,MAAM,WAAW,cAAe,SAAQ,YAAY;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,GAAG,CAAC;CACb;AAED;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,kCAAkC,CAAqB;gBAEnD,OAAO,EAAE,uBAAuB;IAUtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,SAAS,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAI1D;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC,gBAAgB;IAChB,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAmB3C,gBAAgB;IAChB,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;YA4B/D,oBAAoB;CAOrC"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryLoadSignal = void 0;
4
+ const utils_1 = require("@crawlee/utils");
5
+ const log_1 = require("../log");
6
+ const load_signal_1 = require("./load_signal");
7
+ const RESERVE_MEMORY_RATIO = 0.5;
8
+ const CRITICAL_OVERLOAD_RATE_LIMIT_MILLIS = 10000;
9
+ /**
10
+ * Tracks memory usage via `SYSTEM_INFO` events and reports overload when
11
+ * the used-to-available memory ratio exceeds a threshold.
12
+ */
13
+ class MemoryLoadSignal {
14
+ constructor(options) {
15
+ Object.defineProperty(this, "name", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: 'memInfo'
20
+ });
21
+ Object.defineProperty(this, "overloadedRatio", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "store", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ Object.defineProperty(this, "config", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: void 0
38
+ });
39
+ Object.defineProperty(this, "events", {
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true,
43
+ value: void 0
44
+ });
45
+ Object.defineProperty(this, "log", {
46
+ enumerable: true,
47
+ configurable: true,
48
+ writable: true,
49
+ value: void 0
50
+ });
51
+ Object.defineProperty(this, "maxUsedMemoryRatio", {
52
+ enumerable: true,
53
+ configurable: true,
54
+ writable: true,
55
+ value: void 0
56
+ });
57
+ Object.defineProperty(this, "maxMemoryRatio", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: void 0
62
+ });
63
+ Object.defineProperty(this, "maxMemoryBytes", {
64
+ enumerable: true,
65
+ configurable: true,
66
+ writable: true,
67
+ value: void 0
68
+ });
69
+ Object.defineProperty(this, "lastLoggedCriticalMemoryOverloadAt", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ writable: true,
73
+ value: null
74
+ });
75
+ this.store = new load_signal_1.SnapshotStore(options.snapshotHistoryMillis);
76
+ this.config = options.config;
77
+ this.events = this.config.getEventManager();
78
+ this.log = options.log ?? log_1.log.child({ prefix: 'MemoryLoadSignal' });
79
+ this.maxUsedMemoryRatio = options.maxUsedMemoryRatio ?? 0.9;
80
+ this.overloadedRatio = options.overloadedRatio ?? 0.2;
81
+ this._onSystemInfo = this._onSystemInfo.bind(this);
82
+ }
83
+ async start() {
84
+ const memoryMbytes = this.config.get('memoryMbytes', 0);
85
+ if (memoryMbytes > 0) {
86
+ this.maxMemoryBytes = memoryMbytes * 1024 * 1024;
87
+ }
88
+ else {
89
+ this.maxMemoryRatio = this.config.get('availableMemoryRatio');
90
+ if (!this.maxMemoryRatio) {
91
+ throw new Error('availableMemoryRatio is not set in configuration.');
92
+ }
93
+ else {
94
+ this.log.debug(`Setting max memory of this run to ${this.maxMemoryRatio * 100} % of available memory. ` +
95
+ 'Use the CRAWLEE_MEMORY_MBYTES or CRAWLEE_AVAILABLE_MEMORY_RATIO environment variable to override it.');
96
+ }
97
+ // Fallback memory measurement in case memTotalBytes is missing from SystemInfo.
98
+ this.maxMemoryBytes = await this._getTotalMemoryBytes();
99
+ }
100
+ this.events.on("systemInfo" /* EventType.SYSTEM_INFO */, this._onSystemInfo);
101
+ }
102
+ async stop() {
103
+ this.events.off("systemInfo" /* EventType.SYSTEM_INFO */, this._onSystemInfo);
104
+ }
105
+ getSample(sampleDurationMillis) {
106
+ return this.store.getSample(sampleDurationMillis);
107
+ }
108
+ /**
109
+ * Returns typed memory snapshots for backward compatibility with `Snapshotter`.
110
+ */
111
+ getMemorySnapshots() {
112
+ return this.store.getAll();
113
+ }
114
+ /** @internal */
115
+ _onSystemInfo(systemInfo) {
116
+ const createdAt = systemInfo.createdAt ? new Date(systemInfo.createdAt) : new Date();
117
+ const { memCurrentBytes, memTotalBytes } = systemInfo;
118
+ let maxMemoryBytes = this.maxMemoryBytes;
119
+ if (this.maxMemoryRatio !== undefined && this.maxMemoryRatio > 0) {
120
+ maxMemoryBytes = this.maxMemoryRatio * (memTotalBytes ?? this.maxMemoryBytes);
121
+ }
122
+ const snapshot = {
123
+ createdAt,
124
+ isOverloaded: memCurrentBytes / maxMemoryBytes > this.maxUsedMemoryRatio,
125
+ usedBytes: memCurrentBytes,
126
+ };
127
+ this.store.push(snapshot, createdAt);
128
+ this._memoryOverloadWarning(systemInfo, maxMemoryBytes);
129
+ }
130
+ /** @internal */
131
+ _memoryOverloadWarning(systemInfo, maxMemoryBytes) {
132
+ const effectiveMax = maxMemoryBytes ?? this.maxMemoryBytes;
133
+ const { memCurrentBytes } = systemInfo;
134
+ const createdAt = systemInfo.createdAt ? new Date(systemInfo.createdAt) : new Date();
135
+ if (this.lastLoggedCriticalMemoryOverloadAt &&
136
+ +createdAt < +this.lastLoggedCriticalMemoryOverloadAt + CRITICAL_OVERLOAD_RATE_LIMIT_MILLIS)
137
+ return;
138
+ const maxDesiredMemoryBytes = this.maxUsedMemoryRatio * effectiveMax;
139
+ const reserveMemory = effectiveMax * (1 - this.maxUsedMemoryRatio) * RESERVE_MEMORY_RATIO;
140
+ const criticalOverloadBytes = maxDesiredMemoryBytes + reserveMemory;
141
+ const isCriticalOverload = memCurrentBytes > criticalOverloadBytes;
142
+ if (isCriticalOverload) {
143
+ const usedPercentage = Math.round((memCurrentBytes / effectiveMax) * 100);
144
+ const toMb = (bytes) => Math.round(bytes / 1024 ** 2);
145
+ this.log.warning('Memory is critically overloaded. ' +
146
+ `Using ${toMb(memCurrentBytes)} MB of ${toMb(effectiveMax)} MB (${usedPercentage}%). Consider increasing available memory.`);
147
+ this.lastLoggedCriticalMemoryOverloadAt = createdAt;
148
+ }
149
+ }
150
+ async _getTotalMemoryBytes() {
151
+ if (this.config.get('systemInfoV2')) {
152
+ const containerized = this.config.get('containerized', await (0, utils_1.isContainerized)());
153
+ return (await (0, utils_1.getMemoryInfoV2)(containerized)).totalBytes;
154
+ }
155
+ return (await (0, utils_1.getMemoryInfo)()).totalBytes;
156
+ }
157
+ }
158
+ exports.MemoryLoadSignal = MemoryLoadSignal;
159
+ //# sourceMappingURL=memory_load_signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory_load_signal.js","sourceRoot":"","sources":["../../src/autoscaling/memory_load_signal.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import type { StorageClient } from '@crawlee/types';
2
2
  import type { Log } from '@apify/log';
3
- import type { BetterIntervalID } from '@apify/utilities';
4
3
  import { Configuration } from '../configuration';
5
4
  import type { EventManager } from '../events/event_manager';
5
+ import type { ClientSnapshot } from './client_load_signal';
6
+ import type { CpuSnapshot } from './cpu_load_signal';
7
+ import type { EventLoopSnapshot } from './event_loop_load_signal';
8
+ import type { LoadSignal } from './load_signal';
9
+ import type { MemorySnapshot } from './memory_load_signal';
6
10
  import type { SystemInfo } from './system_status';
7
11
  export interface SnapshotterOptions {
8
12
  /**
@@ -47,30 +51,6 @@ export interface SnapshotterOptions {
47
51
  /** @internal */
48
52
  config?: Configuration;
49
53
  }
50
- interface MemorySnapshot {
51
- createdAt: Date;
52
- isOverloaded: boolean;
53
- usedBytes?: number;
54
- }
55
- interface CpuSnapshot {
56
- createdAt: Date;
57
- isOverloaded: boolean;
58
- usedRatio: number;
59
- ticks?: {
60
- idle: number;
61
- total: number;
62
- };
63
- }
64
- interface EventLoopSnapshot {
65
- createdAt: Date;
66
- isOverloaded: boolean;
67
- exceededMillis: number;
68
- }
69
- interface ClientSnapshot {
70
- createdAt: Date;
71
- isOverloaded: boolean;
72
- rateLimitErrorCount: number;
73
- }
74
54
  /**
75
55
  * Creates snapshots of system resources at given intervals and marks the resource
76
56
  * as either overloaded or not during the last interval. Keeps a history of the snapshots.
@@ -94,6 +74,7 @@ interface ClientSnapshot {
94
74
  *
95
75
  * Client becomes overloaded when rate limit errors (429 - Too Many Requests),
96
76
  * typically received from the request queue, exceed the set limit within the set interval.
77
+ *
97
78
  * @category Scaling
98
79
  */
99
80
  export declare class Snapshotter {
@@ -101,21 +82,19 @@ export declare class Snapshotter {
101
82
  client: StorageClient;
102
83
  config: Configuration;
103
84
  events: EventManager;
104
- eventLoopSnapshotIntervalMillis: number;
105
- clientSnapshotIntervalMillis: number;
106
- snapshotHistoryMillis: number;
107
- maxBlockedMillis: number;
108
- maxUsedMemoryRatio: number;
109
- maxClientErrors: number;
110
- maxMemoryBytes: number;
111
- private maxMemoryRatio;
112
- cpuSnapshots: CpuSnapshot[];
113
- eventLoopSnapshots: EventLoopSnapshot[];
114
- memorySnapshots: MemorySnapshot[];
115
- clientSnapshots: ClientSnapshot[];
116
- eventLoopInterval: BetterIntervalID;
117
- clientInterval: BetterIntervalID;
118
- lastLoggedCriticalMemoryOverloadAt: Date | null;
85
+ private readonly memorySignal;
86
+ private readonly eventLoopSignal;
87
+ private readonly cpuSignal;
88
+ private readonly clientSignal;
89
+ /**
90
+ * Returns the four built-in signals as an array, so `SystemStatus` can
91
+ * iterate them alongside any custom `LoadSignal` instances.
92
+ */
93
+ getLoadSignals(): LoadSignal[];
94
+ get cpuSnapshots(): CpuSnapshot[];
95
+ get eventLoopSnapshots(): EventLoopSnapshot[];
96
+ get memorySnapshots(): MemorySnapshot[];
97
+ get clientSnapshots(): ClientSnapshot[];
119
98
  /**
120
99
  * @param [options] All `Snapshotter` configuration options.
121
100
  */
@@ -149,43 +128,28 @@ export declare class Snapshotter {
149
128
  */
150
129
  getClientSample(sampleDurationMillis?: number): ClientSnapshot[];
151
130
  /**
152
- * Finds the latest snapshots by sampleDurationMillis in the provided array.
153
- */
154
- protected _getSample<T extends {
155
- createdAt: Date;
156
- }>(snapshots: T[], sampleDurationMillis?: number): T[];
157
- /**
158
- * Creates a snapshot of current memory usage
159
- * using the Apify platform `systemInfo` event.
131
+ * @deprecated Kept for backward compatibility.
160
132
  */
161
133
  protected _snapshotMemory(systemInfo: SystemInfo): void;
162
134
  /**
163
- * Checks for critical memory overload and logs it to the console.
135
+ * @deprecated Kept for backward compatibility.
164
136
  */
165
- protected _memoryOverloadWarning(systemInfo: SystemInfo, maxMemoryBytes: number): void;
137
+ protected _memoryOverloadWarning(systemInfo: SystemInfo): void;
166
138
  /**
167
- * Creates a snapshot of current event loop delay.
139
+ * @deprecated Kept for backward compatibility.
168
140
  */
169
141
  protected _snapshotEventLoop(intervalCallback: () => unknown): void;
170
142
  /**
171
- * Creates a snapshot of current CPU usage using the Apify platform `systemInfo` event.
143
+ * @deprecated Kept for backward compatibility.
172
144
  */
173
145
  protected _snapshotCpu(systemInfo: SystemInfo): void;
174
146
  /**
175
- * Creates a snapshot of current API state by checking for
176
- * rate limit errors. Only errors produced by a 2nd retry
177
- * of the API call are considered for snapshotting since
178
- * earlier errors may just be caused by a random spike in
179
- * number of requests and do not necessarily signify API
180
- * overloading.
147
+ * @deprecated Kept for backward compatibility.
181
148
  */
182
149
  protected _snapshotClient(intervalCallback: () => unknown): void;
183
150
  /**
184
- * Removes snapshots that are older than the snapshotHistorySecs option
185
- * from the array (destructively - in place).
151
+ * @deprecated Pruning is now handled by individual signals.
186
152
  */
187
- protected _pruneSnapshots(snapshots: MemorySnapshot[] | CpuSnapshot[] | EventLoopSnapshot[] | ClientSnapshot[], now: Date): void;
188
- protected getTotalMemoryBytes(): Promise<number>;
153
+ protected _pruneSnapshots(_snapshots: any[], _now: Date): void;
189
154
  }
190
- export {};
191
155
  //# sourceMappingURL=snapshotter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snapshotter.d.ts","sourceRoot":"","sources":["../../src/autoscaling/snapshotter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshotter.d.ts","sourceRoot":"","sources":["../../src/autoscaling/snapshotter.ts"],"names":[],"mappings":"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"}