iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
Install Ubuntu’s apache2-utils package, run ab with explicit request and concurrency limits, and judge the result using throughput, latency, failed requests, non-2xx responses, and transfer rate together. A safe first test is ab -n 1000 -c 20 https://example.com/ against a server you own or are authorized to exercise. Increase concurrency gradually while watching the server and application, rather than treating one requests-per-second number as a capacity guarantee.
What ApacheBench does
ApacheBench is the ab command-line HTTP benchmarking client. Apache HTTP Server documentation describes it as “a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server.” It sends requests to a URL and reports timing, throughput, and error information. It can target HTTP or HTTPS endpoints.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →ab is useful when you need a controlled answer to a narrow question such as “How many requests can this endpoint serve at this concurrency?” It is not a complete simulation of a browser, a logged-in user journey, or a production traffic mix. The test client repeatedly exercises one request shape, so the URL, method, payload, headers, connection behavior, and concurrency must be recorded with every result.
Only load-test systems for which you have explicit permission. Even a short run can consume CPU, memory, database connections, worker processes, bandwidth, or rate-limit capacity. Test a staging system where possible, and notify the owner of any shared environment before starting.
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
How to install ApacheBench on Ubuntu
Ubuntu supplies ApacheBench in the apache2-utils package. Install it from the Ubuntu package repositories:
- Refresh the local package index:
sudo apt update
- Install the package:
sudo apt install apache2-utils
- Confirm that the command is available and inspect its help:
ab -V
ab -h
ab -V prints the installed version. ab -h displays the options supported by that build, which is the best reference when a distribution version differs from another Ubuntu release.
How to run a safe baseline test
Start with a modest, repeatable GET request. The following example sends 1,000 total requests with 20 requests in flight to the site root:
ab -n 1000 -c 20 https://example.com/
Replace the URL with an endpoint you control. Use the trailing slash for a root URL so the request target is unambiguous.
What -n and -c mean
-ntotal requests: the number of requests generated by the run. In the example, the client attempts 1,000 requests.-cconcurrency: the number of requests that may be in flight at once. A value of 20 creates up to 20 simultaneous requests as the run proceeds.
The default request count is one. A single request is useful as a connectivity check, but it is not a representative benchmark. Specify both -n and -c for a baseline so another person can reproduce the same workload.
Ramp up instead of starting at maximum pressure
Run a sequence such as 5, 10, 20, 40, and 80 concurrent requests, using the same endpoint and request count at each stage. Stop or reduce the load when error rates, latency, resource saturation, or service health becomes unacceptable. The exact levels depend on the server and are not universal performance targets.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Before each run, record the Ubuntu version, ab -V output, URL, protocol, method, request count, concurrency, payload, headers, keep-alive setting, and relevant server configuration. Keep the endpoint and workload identical when comparing two builds or configuration changes.
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Time-bounded and connection-behavior tests
Run for a fixed duration with -t
Use -t when the test should run for a specified number of seconds rather than a fixed request count:
ab -t 60 -c 20 https://example.com/
This runs with 20 concurrent requests for up to 60 seconds. A duration makes it easier to observe sustained behavior and server-side resource trends. Save the exact duration and concurrency with the output.
Test persistent connections with -k
Add -k to request HTTP keep-alive behavior:
ab -n 1000 -c 20 -k https://example.com/
Use the same setting for every run in a comparison. A keep-alive test and a new-connection test measure different costs, particularly TLS handshakes, TCP setup, connection queues, and proxy behavior. Do not compare their requests-per-second figures as if they were the same workload.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Clear out junk files and repair common Windows errors3Scan for outdated or missing drivers - takes under a minuteSet a socket timeout with -s
Set a socket timeout in seconds when you need a defined limit for a stalled connection:
ab -n 1000 -c 20 -s 30 https://example.com/
A timeout prevents a run from waiting indefinitely on an unresponsive peer, but it also turns slow responses into failures once the limit is reached. Record the timeout because changing it changes the meaning of failed requests.
How to test different request types
The request must match the operation you are trying to measure. A cached public GET, an authenticated API call, and a JSON POST are separate workloads.
Add request headers with -H
Supply a header in the form Header-Name: value:
ab -n 500 -c 10 -H 'Accept: application/json' https://example.com/api/status
Include headers that select the response format, tenant, or feature flag only when they are part of the authorized test scenario. Keep all other variables unchanged between comparison runs.
Recommended Free Tools
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Send a cookie with -C
Pass a cookie as name=value:
ab -n 500 -c 10 -C 'session=test-session' https://example.com/account
Use a test account and a short-lived or disposable session. Do not paste a real user’s cookie into a command or log.
Use Basic Authentication with -A
ApacheBench accepts Basic Authentication credentials in the form username:password:
ab -n 200 -c 5 -A 'loadtest:password' https://example.com/private
Command-line arguments can be exposed through shell history, process listings, terminal recordings, and CI logs. Use credentials created specifically for testing, restrict their permissions, and remove or rotate them after the run. Avoid placing production secrets in the command line.
Send a POST body with -p and -T
Prepare a representative test payload in a file, then identify its media type:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
printf '%s' '{"name":"load-test"}' > body.json
ab -n 200 -c 5 -p body.json -T application/json https://example.com/api/items
Use a test endpoint or data set that can tolerate repeated submissions. If the operation writes data, decide in advance how records will be isolated and cleaned up. A POST benchmark can measure database writes, queues, locks, and downstream calls that a read-only GET does not touch.
Use -i for HEAD requests
When you need headers without downloading the response body, use -i:
ab -n 500 -c 10 -i https://example.com/
HEAD and GET are not interchangeable tests. Confirm that the application, proxy, and cache handle HEAD correctly before using its result to infer GET capacity.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
How to read ApacheBench output
After a run, ab prints a summary. Interpret the fields as a group rather than selecting the largest requests-per-second value.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute| Output field | Meaning | What to check |
|---|---|---|
| Concurrency Level | The concurrency value used for the run. | Compare only runs made at the same concurrency when making a direct performance comparison. |
| Time taken for tests | Total elapsed time for the test. | Use it with completed requests to understand throughput and test duration. |
| Complete requests | Requests completed by the run. | Check that the count matches the intended workload when no time limit or interruption applies. |
| Failed requests | Requests considered failures because of connection, read, content-length, or exception problems. | Investigate these before accepting a throughput result. |
| Non-2xx responses | Responses outside the successful 200 range. | Inspect application, authentication, routing, throttling, and upstream errors. |
| Keep-Alive requests | Requests handled using persistent connections when keep-alive is enabled. | Confirm that the result represents the connection behavior you intended to test. |
| Total transferred | All bytes transferred during the run. | Use it to spot changes in headers, compression, redirects, or response size. |
| HTML transferred | Response-body bytes counted as HTML transfer. | Compare response sizes when endpoint content changes. |
| Requests per second | Total requests divided by elapsed test time, as reported by ab. |
Read alongside failures, non-2xx responses, latency, and workload details. |
| Time per request | Average timing reported for the run. | Compare with identical concurrency, URL, method, payload, and connection settings. |
| Transfer rate | Received data rate. | Determine whether response size or network bandwidth is influencing the result. |
Requests per second is not an acceptance criterion by itself
A higher throughput number is not an improvement if failed requests or non-2xx responses rise. For example, a configuration that reports more requests per second while returning authentication errors has not demonstrated greater application capacity. Define an acceptance rule before testing, such as zero failed requests, no unexpected non-2xx responses, and a latency or throughput target appropriate to the service. The target must come from your own service requirements; ApacheBench does not provide a universal requests-per-second benchmark.
Use completed and failed counts together
“Complete requests” describes what the client completed, while “failed requests” identifies protocol or transfer problems detected by the client. A run can finish its allotted request count and still contain failures. Review the failure categories, server access and error logs, reverse-proxy logs, and application metrics at the same timestamps.
Distinguish non-2xx responses from client failures
A non-2xx response is an HTTP response outside the successful 200 range. It may indicate a legitimate redirect or a deliberate authorization response, but it may also reveal a broken route, throttling, an application exception, or an upstream failure. A client-side failed request is a different signal: the connection, read, content length, or another exception prevented a valid response from being processed.
A repeatable load-test procedure
- Define the question. Decide whether you are measuring a public GET, a HEAD request, an authenticated read, a JSON POST, or another single endpoint operation. State whether the run represents a cache hit, cache miss, or uncached request if that distinction matters.
- Choose an authorized target. Prefer staging or an isolated production slice. Confirm that test data, queues, email, payments, webhooks, and third-party calls cannot create unintended side effects.
- Verify the client. Run
ab -Vand confirm that the client can reach the URL with a small connectivity check. - Set explicit limits. Choose
-nand-c, or choose-tand-c. Add-k,-s, headers, cookies, authentication, or a payload only when the scenario requires them. - Capture a baseline. Run a low-concurrency test and save the complete terminal output together with the exact command.
- Observe the server. During each run, watch CPU, memory, disk I/O, network throughput, worker or connection limits, access and error logs, application latency, database saturation, and upstream errors.
- Increase pressure in steps. Raise concurrency gradually. Allow the system to return to a steady state between runs when caches, queues, or autoscaling can affect the next result.
- Repeat identical runs. Run each level more than once and investigate large variation instead of averaging away unexplained failures. Keep endpoint, protocol, method, payload, headers, timeout, keep-alive setting, and client location consistent.
- Record the stopping point. Note the first concurrency at which your acceptance criteria fail, which metric failed, and what server resource was saturated.
- Restore and verify. Remove test records, revoke test credentials, drain test queues where appropriate, and check that the service is healthy after the load ends.
Test designs you can compare
| Design | Request and protocol | Example workload | Best use | Acceptance signals |
|---|---|---|---|---|
| Baseline public read | GET over HTTP or HTTPS | -n 1000 -c 20 |
Establish a controlled endpoint reference. | Zero failed requests, expected status codes, stable latency, and repeatable throughput. |
| Sustained service test | GET with the selected protocol | -t 60 -c 20 |
Observe behavior over a fixed interval. | No growth in errors, resource exhaustion, or queue backlog during the interval. |
| Persistent-connection test | GET with keep-alive | -n 1000 -c 20 -k |
Measure a workload that reuses connections. | Expected keep-alive count, no connection failures, and consistent response behavior. |
| Authenticated read | GET with cookie or Basic Authentication | -C or -A plus explicit limits |
Exercise authorization and session handling. | Expected authorized status, no credential leakage, and no session or rate-limit errors. |
| JSON write | POST with a body and content type | -p body.json -T application/json |
Measure application and database work for a write. | Expected status, safe test data handling, no duplicate side effects, and no failed requests. |
| Header-only check | HEAD | -i with explicit limits |
Inspect header-serving behavior without downloading bodies. | Correct headers and status codes; do not treat it as a GET benchmark. |
These designs are not interchangeable. Protocol choice, concurrency, request count or duration, keep-alive behavior, payload size, authentication, and headers all change the work performed by the server. Compare results only when those axes match or when the difference is the subject of the experiment.
Common problems and how to fix them
The command is not found
Install apache2-utils, then run ab -V. If the package manager reports repository or permission problems, resolve those Ubuntu package issues before interpreting benchmark results.
The run shows failed requests
Separate connection, read, content-length, and exception failures from HTTP status failures. Check the client timeout, server logs, proxy logs, firewall rules, listener limits, worker pools, and upstream dependencies. Repeat with lower concurrency to determine whether the problem starts at a particular pressure level.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
The run shows unexpected non-2xx responses
Inspect the response class and correlate timestamps with application logs. Redirects, authentication failures, missing routes, throttling, and server errors have different remedies. Confirm that the URL, Host routing, cookies, headers, and credentials match the intended scenario.
Throughput is unexpectedly low
First verify the client’s network path and server-side saturation. Compare a small concurrency run with a larger one, inspect transfer rate and response size, and check whether HTTPS handshakes or new connections dominate the test. A large response, a slow database query, or a constrained worker pool can each limit requests per second for different reasons.
Results vary widely between runs
Keep the command and environment fixed, allow caches and queues to settle, and repeat the run. Record concurrent background traffic, autoscaling events, garbage collection, database activity, and network changes. Do not combine results from different URLs, payloads, client locations, or keep-alive settings into one average.
The test appears to overload the service
Stop the run, reduce concurrency, and verify recovery. Use a staging target or a narrow test window, establish a rollback and cleanup plan, and coordinate with the service owner. A load test is not successful if it causes an avoidable outage.
What ApacheBench cannot tell you
ApacheBench is a focused HTTP benchmark, not a browser automation system or a full workload model. It does not reproduce every browser behavior, user think time, asset waterfall, cache pattern, multi-step journey, or mix of endpoints. A single URL also cannot reveal how capacity changes when several routes compete for the same database, connection pool, queue, or upstream service.
Use ab for controlled endpoint experiments and regression checks. When the capacity question concerns realistic user behavior, model the journeys and traffic mix with a workload tool that can represent those interactions. Keep the ApacheBench command as a lower-level diagnostic so you can isolate one endpoint when a broader test reports a problem.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Checklist before accepting a result
- The target is owned by you or explicitly authorized for load testing.
- The Ubuntu package and
abversion are recorded. - The URL, protocol, method, headers, cookies, authentication, payload, and content type are documented.
-nand-c, or-tand-c, are explicit.- Keep-alive and timeout settings are recorded.
- Server CPU, memory, connection limits, logs, application metrics, database behavior, and upstream errors were observed.
- Failed requests and non-2xx responses were investigated rather than ignored.
- At least one repeat run used exactly the same workload.
- Test data, credentials, queues, and other side effects were cleaned up.
- The conclusion states the tested conditions and does not present the result as a universal requests-per-second capacity.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

