Skip to content

Maximum concurrent browser instances per BAS engine process (bas-remote-node) — scaling beyond ~30 #29

@binhvq

Description

@binhvq

Hello BAS team,

We are running BAS Premium (engine 30.x) in headless mode on Windows Server to execute compiled scripts at scale. We do NOT use BAS Studio at runtime — instead we drive the engine programmatically from a Node.js worker using the bas-remote-node library. Each Node worker process opens one engine, downloads/extracts it on first run, and launches multiple concurrent browser runs through that single engine connection. We have hit a concurrency limit and would appreciate your guidance.

Our setup:

  • Node.js (v20/v22) worker process per machine, using bas-remote-node to start the engine and run a compiled script repeatedly with different parameters/profiles.
  • Each "run" = one fresh browser (cold start), pinned to its own proxy and fingerprint profile.
  • Windows Server, plenty of CPU/RAM headroom.

What we observe:

  • A single Node worker process runs stably at up to ~30 concurrent browser instances. Failure rate stays low (~1–5%).
  • When we raise a single process to ~50 concurrent, the failure rate spikes almost immediately. The failures look like engine cold-start / startup timeouts and dropped control connections (the engine websocket / control channel) while many new browsers launch at once.
  • Scaling horizontally — more machines, each kept at ≤30 concurrent — works fine and does not raise the error rate. This strongly suggests a per-process (or per bas-remote-node connection) limit, not a network, proxy, or hardware issue.

Our questions:

  1. Is there a known or recommended maximum number of concurrent browser instances per single engine process, or per single bas-remote-node client/connection?
  2. Is new-browser cold start serialized/throttled internally by the engine or by the remote protocol? If so, is there any setting to widen or tune it?
  3. For high concurrency on one machine (e.g. 50–100+ browsers), do you recommend running multiple separate bas-remote-node clients / engine processes on the same machine, or is there an engine/library configuration that supports this safely within a single process/connection?
  4. Are there any engine flags or bas-remote-node options to reduce cold-start time, or to raise the tolerance/timeout of the control channel so it survives bursts of simultaneous launches?

Our goal is to run several hundred concurrent Chrome instances per server reliably. Any official recommendation on the right architecture (clients-per-N-browsers, engine tuning, etc.) would be very helpful.

Thank you for your support.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions