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
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 SSDm6id.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.
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.
Configuring terminated.AIQ Also,to Use NVMe Storage
The recommended setup uses an initialization script, such as nvme_setup.sh, to prepare the dataperformance in the NVME SSD volumes are not saved in the AMI images.node.
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:
- Detect
- and
Mountmount theNVMEavailableSSDNVMestorageinstance-storeasdevice. - Copy
athedeviceGraalVMvisibleinstallation to theOSNVMe storage.
Copy GraalVMthe andaiq_distribution aiq_distribution folderdirectory to the NVMENVMe SSDstorage.
The Chrome configuration can be added to:
Modify global.json in aiq_distribution/NetworkProxy/config/global.json
Add the following option added:
configuration:
{
"name": "experimentalDS3",
"value": "--disk-cache-dir=cache||--disk-cache-size=1"
}
This
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 scriptAdd 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.
The Thisoriginal script assumes thethat AIQ is locatedinstalled atin:
/opt/aiq/aiq_distribuition.aiq_distribution
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
AIQdevicelocationratheristhandifferent.
assuming a fixed device name.
2. Configure Chrome disk caching
Modify:
2. Modify global.json in
aiq_distribution/NetworkProxy/config/global.json
Add:
{
"name": "experimentalDS3",
"value": "--disk-cache-dir=cache||--disk-cache-size=1"
}
The
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
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.
Create:
/etc/systemd/systemsystem/appvance.service
Use the following contents.configuration Editand adjust the paths inand fileJava asversion neededfor tothe matchenvironment:
[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:
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 appvanceWith
Resource Limits
When increasing browser concurrency, make sure the aboveoperating configuration,system ancan instancesupport withthe sizerequired number of m6id.2xlargeprocesses AIQand wasopen ablefiles.
The executeexample aservice testuses:
LimitNOFILE=10000000
testLimitNPROC=20000
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 |
|---|---|
| 40 |
| 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:
- CPU utilization
- Memory utilization
- EBS IOPS and throughput
- NVMe utilization
- Disk latency
- Network utilization
- Number of open files
- Number of running processes
- Chrome memory consumption
- 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.