Skip to main content

Maximizing the number of concurrent browsers

For performance testing, you can maximize the number of concurrent browsers that can be opened in a node.

For AWS EC2 nodes running AIQ,increase the number of concurrent Chrome browsers that can berun assignedon peran nodeAIQ isTest aroundNode 20by tooptimizing 30,the dependingnode's compute and storage resources.

The maximum number of concurrent browsers depends on the application.application

under

The main bottleneck to achieving more concurrent browsers istest, the speedcomplexity of the test, browser activity, available CPU and memory, and storage performance.

As a general starting point, an AWS EC2 node using standard EBS storage may support approximately 20 to 30 concurrent Chrome browsers. Higher concurrency can be achieved by using EC2 instance types that provide local NVMe SSD instance storage and by configuring AIQ to use that storage.

Important: These numbers are guidelines, not fixed limits. The appropriate browser count must be determined through performance testing with the application under test.

Using NVMe SSD Instance Storage

Storage I/O can become a bottleneck when running a large number of concurrent browsers. Browser processes generate significant disk activity, including cache and temporary-file operations.

AWS EC2 instance types such as the m6id family include local NVMe SSD instance storage. For example, current AWS specifications list:

  • m6id.2xlarge: 8 vCPUs, 32 GiB memory, 474 GB NVMe SSD
  • m6id.4xlarge: 16 vCPUs, 64 GiB memory, 950 GB NVMe SSD

These NVMe SSD volumes provide substantially higher I/O performance than typical baseline EBS configurations.

Important considerations

NVMe instance storage is ephemeral. Data stored on an instance store volume persists only for the lifetime of the associated EC2 instance. It should therefore be treated as measuredtemporary inworking IOPSstorage (input/outputrather operationsthan perpermanent second).storage.

A

AIQ typicalfiles, 60GBconfiguration EBSfiles, volumeor other data that must survive an instance stop or termination should remain on persistent storage.

Because the NVMe storage is not rated higher than 3000 IOPS.

To avoidpersistent, the bottlenecknode ofmust volumeprepare speed, you can leverage AWS EC2 instances that include NVME SSD volumes. These types of volumes are very fast, but they are ephemeralthe storage volumes.and Anycopy datathe storedrequired inAIQ thesefiles volumesto willit beeach lost oncetime the instance is stoppedinitialized.

or

Configuring terminated.AIQ Also,to Use NVMe Storage

So the process of starting appvance in one of this nodes involves several initial steps which are coded in the provided nvme_setup.sh script recommended for performance nodes. The script does:should:

  1. Detect
  2. and

    Mountmount the NVMEavailable SSDNVMe storageinstance-store asdevice.

  3. Copy athe deviceGraalVM visibleinstallation to the OSNVMe storage.

Copy GraalVMthe andaiq_distribution aiq_distribution folderdirectory to the NVMENVMe SSDstorage.

Configure Chrome to use a local cache directory on the NVMe storage.Start AIQ from the NVMe storage.

The Chrome configuration can be added to:

Modify global.json in aiq_distribution/NetworkProxy/config/global.json

so Chrome browser has

Add the following option added:
configuration:

{
  "name": "experimentalDS3",
  "value": "--disk-cache-dir=cache||--disk-cache-size=1"
}

This

configuration redirects the

StartChrome disk cache to the local storage used by the AIQ from the NVME SSD drive.node.

Setting upUp aan AmazonAWS LinuxEC2 2Performance node for performance testingNode

    1.

    Prepare the NVMe setup script

    Add the followingnvme_setup.sh file (nvme_setup.sh)script to the aiq_distributionAIQ folderdistribution inon the Amazon Linux 2EC2 instance.
    This

    The script willshould detect the available NVMe instance-store volume, mount the NVME SSD volume, if found,it, and then copiescopy the Graalvmrequired AIQ and aiq_distributionGraalVM foldersdirectories to the SSDlocal drive.storage.


    Note:

    The Thisoriginal script assumes thethat AIQ is locatedinstalled atin:

    /opt/aiq/aiq_distribuition.aiq_distribution
    Edit

    If AIQ is installed in another location, update the script ifaccordingly.

    Note: The exact NVMe device name can vary between EC2 instance types and operating systems. The setup script should detect the AIQdevice locationrather isthan different.
    assuming a fixed device name.

    2. Configure Chrome disk caching

    Modify:

    >

    2. Modify global.json in

    aiq_distribution/NetworkProxy/config/global.json
    so that Chrome browsers have following option added:

    Add:

    {
      "name": "experimentalDS3",
      "value": "--disk-cache-dir=cache||--disk-cache-size=1"
    }

    The

    cache

    directory should reside on the NVMe-backed AIQ installation.

    3. Start AIQ startedusing usingsystemd

    For Linux performance nodes, start AIQ through a systemd serviceDoservice notrather usethan /etc/rc.local.local.


    The

    Using systemd servicealso canallows setyou theto maximumincrease numberoperating-system ofresource open files per process.limits. This is neededparticularly inimportant linuxwhen distrosrunning many concurrent browsers because the default of 1024 files per per-process isfile descriptor limit may be too low.


    Note:

    Create:

    Staring AIQ as a service in this manner is not compatible with the Lab Management automatic upgrade for linux nodes.

    To configure the service create a text file named appvance.service in the
    /etc/systemd/systemsystem/appvance.service
    folder with

    Use the following contents.configuration Editand adjust the paths inand fileJava asversion neededfor tothe matchenvironment:

    your configuration.
    [Unit]
    Description=Start Appvance IQ services
    After=syslog.target
    
    [Service]
    Environment=PATH=/opt/graalvm-ce-java11-21.3.3.1/bin:/sbin:/bin:/usr/sbin:/usr/bin
    Environment=JAVA_HOME=/opt/graalvm-ce-java11-21.3.3.1
    User=ec2-user
    Type=simple
    
    LimitNOFILE=10000000
    LimitNPROC=20000
    
    ExecStart=/bin/bash /opt/aiq/aiq_distribution/TestNode/nvme_setup.sh
    WorkingDirectory=/opt/aiq/aiq_distribution/TestNode
    
    TimeoutStartSec=0
    
    [Install]
    WantedBy=multi-user.target

    Note: Verify the Java/GraalVM version and installation path before using this configuration. The paths above are examples from the original configuration and may not match the AIQ version installed on your node.

    After creating above file, execute the followingservice, commandsrun:

    in
    sudo the shell:

    systemctl daemon-reload sudo systemctl enable appvance sudo systemctl start appvance

    To verify the service:

    sudo systemctl status appvance

    The original article contains a typo (systemclt enable). The correct command is:

    systemctl enable appvance

    With

    Resource Limits

    When increasing browser concurrency, make sure the aboveoperating configuration,system ancan instancesupport withthe sizerequired number of m6id.2xlargeprocesses AIQand wasopen ablefiles.

    to

    The executeexample aservice testuses:

    designer
    LimitNOFILE=10000000
    testLimitNPROC=20000
    case

    These usingvalues 40are chromeintentionally browsershigh concurrently.and Anshould instancebe withvalidated aagainst sizethe requirements of m6id.4xlarge was able to execute 80 chrome browsers concurrently. Please note thatthe specific valuesenvironment. mightIncreasing varylimits dependingdoes ofnot by itself guarantee higher browser concurrency; CPU, memory, storage I/O, network capacity, and the application under test.test can all become bottlenecks.

    Example Concurrency Results

    The original performance testing produced the following results:

    EC2 Instance

    Concurrent Chrome Browsers

    m6id.2xlarge

    40

    m6id.4xlarge

    80

    These results were obtained with a Test Designer test case and should be treated as example performance results rather than guaranteed capacity.

    Actual concurrency can vary depending on:

    • Application complexity
    • Number and type of requests generated by each browser
    • JavaScript execution
    • Browser memory consumption
    • CPU utilization
    • Network traffic
    • Test data
    • AIQ configuration
    • Chrome version
    • Operating-system configuration
    • Storage performance

    For this reason, perform a capacity test before selecting the final number of concurrent browsers for a performance environment.

    Amazon Linux Version

    The original version of this article specifically targeted Amazon Linux 2.

    Amazon Linux 2 reached end of life on June 30, 2026. AWS recommends migrating to Amazon Linux 2023.

    Therefore, new performance nodes should use an AWS-supported operating system and the corresponding AIQ installation and startup configuration.

    If
    an
    existing environment still uses Amazon Linux 2, treat the configuration in this article as a legacy setup and plan migration to Amazon Linux 2023.

    EBS Storage Considerations

    EBS performance depends on the volume type and its provisioned performance.

    For example, Amazon EBS gp3 volumes provide a baseline of 3,000 IOPS and 125 MiB/s throughput, with additional IOPS and throughput available through provisioning.

    Therefore, the storage bottleneck should not be described simply as a limitation of a "60 GB EBS volume." When investigating concurrency limitations, monitor the actual EBS IOPS, throughput, latency, and utilization of the node.

    For workloads that generate substantial browser disk activity, local NVMe instance storage can be an effective way to reduce EBS-related storage contention.

    Troubleshooting and Capacity Testing

    If increasing the number of browsers causes execution failures or significantly longer response times, monitor the following resources during the test:

    1. CPU utilization
    2. Memory utilization
    3. EBS IOPS and throughput
    4. NVMe utilization
    5. Disk latency
    6. Network utilization
    7. Number of open files
    8. Number of running processes
    9. Chrome memory consumption
    10. AIQ/Test Node logs

    Increase concurrency gradually rather than immediately configuring the maximum expected browser count.

    For example:

    20 browsers → 40 browsers → 60 browsers → 80 browsers

    At each level, verify that the node remains stable and that response times and error rates remain within the requirements of the performance test.


    Last updated: MarchSeptember 28,2, 20232026

    If you have any feedback on this topic, please contact us at documentation@appvance.ai.