Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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

Apache at 100% CPU is a symptom, not a diagnosis. The fastest reliable method is to identify the high-CPU Apache process, match its process ID to the active request in server-status, then determine whether the expensive work is Apache itself, PHP-FPM, WordPress, a scheduled task, or unwanted traffic. After the cause is known, reduce repeated execution with caching, isolate faulty code, tune concurrency to available memory, and add capacity or traffic controls if legitimate demand still exceeds the server.

What 100% Apache CPU actually tells you

A CPU percentage by itself does not identify the request or component responsible. Depending on the operating system and monitoring tool, 100% can mean one core is fully occupied; a process can also show more than 100% when several cores are counted. Apache may simply be the visible worker while PHP-FPM, a plugin, a theme function, a cron task, or a loopback request is consuming the CPU behind it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do not start by copying a generic Apache setting or restarting the server repeatedly. A restart removes the evidence and leaves the workload unchanged. Capture the active request and surrounding log entries while the problem is occurring, then make one controlled change at a time.

Collect evidence before changing configuration

1. Find the high-CPU Apache processes

Use top, htop, or an equivalent process viewer while the site is busy. Record the Apache PIDs with the highest CPU, their resident memory, and whether the same PIDs remain busy across several samples. A single short-lived spike can be normal; a repeating set of workers points to a request pattern or capacity problem.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • 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.

Apache’s documentation describes server-status as a starting point for finding which requests or clients are consuming server resources. Enable it temporarily or leave it enabled only behind an administrator-only network restriction.

2. Enable and lock down mod_status

Enable the module using your distribution’s normal Apache module tooling, then add a protected status location to the appropriate virtual host or server configuration:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
ExtendedStatus On

<Location "/server-status">
    SetHandler server-status
    Require ip 192.0.2.0/24
</Location>

Replace the documentation-only address above with your office VPN, bastion host, or other administrator network. Never expose the status page to the public internet: it reveals request, client, and worker details. Validate the configuration with your platform’s Apache config-test command (commonly apachectl configtest), reload Apache, and open /server-status from an allowed address.

3. Match PIDs to requests

Reload the status page while the high-CPU PIDs are still visible in top. Look for the worker PID, request path, client address, virtual host, and current state. Repeat the comparison several times because requests finish and workers change quickly. A request that appears in multiple samples is a stronger lead than one seen only once.

If the status page shows a PHP-backed URL, that does not prove PHP is the only cause; it identifies the Apache worker handling the request. Continue into PHP-FPM and WordPress diagnostics before deciding where to tune.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • 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

4. Read access and error logs around the same timestamps

Search the relevant virtual-host access log for repeated paths, status codes, user agents, and bursts. Check the error log for upstream timeouts, child-process errors, rewrite loops, exhausted workers, and database-related failures. Correlate timestamps with the PIDs and URLs from server-status.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Evidence Likely direction Next check
Many requests for one uncached page or expensive query URL WordPress/PHP execution is repeating PHP-FPM slow requests, page-cache coverage, plugin and theme code
Frequent wp-cron.php or loopback requests Scheduled work is overlapping or triggered on visits Scheduled events, cron duration, and the code attached to those events
Large bursts from a few user agents or addresses Bot or abusive traffic Access-log patterns, rate limits, and edge filtering
Apache workers busy while PHP-FPM is idle Static files, TLS, compression, connection handling, or a rewrite problem Apache configuration, response sizes, and static-resource requests
PHP-FPM workers saturated or slow log entries present Application code or database work is the bottleneck Slow-request traces, plugin/theme paths, and database queries

Separate Apache work from PHP-FPM work

When Apache is mainly waiting on PHP

On a typical WordPress installation Apache serves static files and proxies PHP requests to PHP-FPM. The Apache process can therefore appear busy or accumulate waiting requests even when the costly operation is inside PHP. Inspect PHP-FPM’s pool status and slow-request log at the same time as Apache status. PHP-FPM exposes slow-request metrics; use its documented status endpoint and slow-log settings, protected with the same administrator-only access control as server-status.

Interpret CPU figures in context: PHP documentation notes that percentages can exceed 100% when multiple CPU cores are counted. Compare the number of active, idle, and slow workers with the pool limit, request durations, and Apache’s upstream errors rather than treating one percentage as a universal threshold.

When Apache itself is doing the work

If high-CPU workers are serving static files or repeatedly processing rewrites, compression, or large responses while PHP-FPM remains healthy, inspect Apache modules and URL rules. Look for redirect or rewrite loops, uncompressed downloads, and clients repeatedly fetching assets. Fix the specific rule or response pattern before changing worker limits.

Use a safe observation window

Capture a few samples during normal traffic and during the spike. If you can reproduce the load, do it from a controlled client and note the exact URL, authentication state, query string, and response status. Avoid load testing a production site while it is already resource-starved.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【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.

Check the WordPress execution paths most likely to overload a server

Uncached front-end requests

Anonymous page requests that miss the full-page cache execute Apache, PHP, WordPress, theme code, and often database queries. A burst of misses can create many simultaneous PHP requests even when the page itself is ordinary. Identify the URLs with low or absent cache hits and inspect why they are excluded or being purged.

wp-cron.php and loopback requests

WordPress uses loopback requests to start WP-Cron, and plugins or themes can register scheduled events. A slow event, an event scheduled too frequently, or several overlapping loopbacks can consume CPU and PHP workers. In the scheduled-events view or the responsible plugin’s settings, record the hook name, interval, last-run time, and duration. Remove obsolete events and correct the code or schedule that creates expensive work.

If visitor-triggered cron is causing bursts, move scheduling to a system cron mechanism only after confirming the host supports it and that every required event will still run. Keep one scheduling method active; running both visitor-triggered and system-triggered cron can duplicate jobs.

admin-ajax.php

Front-end widgets, live search, filters, dashboards, and logged-in features often call admin-ajax.php. In access logs, group requests by action, user, response time, and frequency. An action that performs a full query on every keystroke or refresh is a stronger target than the endpoint name alone. Add debouncing, narrower queries, pagination, or caching in the responsible feature rather than blocking the entire endpoint.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

REST API and XML-RPC traffic

REST and XML-RPC requests can be legitimate integrations or automated abuse. Identify the route, authentication state, user agent, and status code before restricting anything. Protect only the expensive or unneeded operation; blocking required API routes can break mobile apps, editors, payment callbacks, or integrations.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【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.

Search and filter URLs

Unbounded searches and faceted filters can generate database-heavy requests with many unique query strings that bypass page caches. Check whether a plugin or theme is issuing repeated queries, whether results are paginated, and whether bots are enumerating combinations. Normalize or limit expensive parameters and ensure cache rules do not store private or user-specific responses.

Isolate a plugin or theme safely

When application code is suspected, deactivate all plugins and test the same request. If CPU use falls, reactivate plugins one at a time, retesting after each activation until the offending component is identified. Perform this on staging whenever possible; on a production site, schedule a maintenance window, preserve a rollback path, and warn logged-in users because deactivation can remove required features. Once isolated, update or reconfigure the component, replace the expensive operation, or obtain a fix from its maintainer.

Reduce repeated execution with caching

Full-page or reverse-proxy caching

WordPress performance guidance warns that without caching, requests can stack up and slow or crash the web and database server. A full-page cache or reverse-proxy cache stores a pre-built response for cacheable anonymous visitors, so subsequent hits do not execute the entire Apache, PHP, and WordPress path.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify that the cache is actually serving hits: inspect response headers, cache logs, and origin request counts. Purging on every small content change, varying on unnecessary cookies, or bypassing cache for all visitors can erase the benefit.

Keep dynamic paths out of the page cache

Request type Typical cache treatment Reason
Public, anonymous article or landing page Cache when the response is identical for visitors Removes repeated PHP and database execution
Logged-in account or administrator page Bypass page cache Content is private and user-specific
Cart, checkout, payment, or order status Bypass and preserve required cookies State changes must not be served from another user’s response
Personalized, preview, or nonce-bearing response Bypass or use narrowly scoped rules Tokens and private data must remain valid
REST, XML-RPC, and AJAX endpoints Cache only deliberately safe, public operations Many calls are stateful or authenticated

Persistent object caching

Where the host supports it, persistent object caching can reduce repeated database work that page caching cannot cover, especially for logged-in users and dynamic queries. It does not replace page-cache rules, PHP optimization, or a fix for an expensive plugin; measure hit rates and response time after enabling it.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【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.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Control bots and abusive traffic without breaking WordPress

If logs show legitimate requests that the server can handle individually but not in the observed volume, add rate limiting at the web server or an upstream CDN/WAF. Filter by path, method, authentication state, or verified client behavior rather than imposing one blunt limit on the whole site. A CDN or WAF can absorb unwanted requests before they reach Apache, while origin caching reduces the cost of requests that are allowed through.

Test security rules against publishing, login, checkout, webhooks, REST integrations, and cache purges. A rule that blocks or caches a required dynamic path can create an outage even while CPU usage falls.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Tune MaxRequestWorkers only after identifying the workload

MaxRequestWorkers limits how many Apache workers can process requests concurrently. Apache documents it as a safeguard against spawning so many children that the operating system starts swapping. It is a capacity control, not a cure for an expensive request.

Estimate a safe ceiling

  1. Measure peak Apache child memory, and account for PHP-FPM workers, the database, the operating system, and other services.
  2. Reserve memory headroom so normal bursts do not force swapping.
  3. Divide the memory available for Apache by the measured peak memory per Apache worker to obtain a conservative upper bound.
  4. Compare that bound with the current MaxRequestWorkers and with server-status observations.
  5. Change the value in a small step, reload Apache, and watch CPU, memory, swap activity, request queueing, response time, and error logs.

Understand the trade-off

Change Benefit Risk
Lower MaxRequestWorkers Protects RAM and can prevent swapping or total host failure More requests queue or time out during bursts
Raise MaxRequestWorkers Allows more concurrent requests when workers are lightweight and memory is available Can multiply PHP/database work and exhaust CPU or RAM
Leave it unchanged while fixing the workload Preserves a known baseline for comparison Does not protect the host if the current limit already permits overload

Do not copy a value from another server: hardware, PHP worker size, database usage, request mix, and active modules differ. Use status output and measured memory to guide the setting.

Decide whether the server lacks capacity

After caching, code isolation, cron cleanup, and traffic controls, replay the normal workload. If requests are legitimate, optimized, and still consume more CPU or memory than the machine can provide, the remaining problem is capacity. Increasing CPU or RAM, moving to a host with more suitable resources, or distributing traffic can be appropriate. SSD or NVMe storage may also help when database or filesystem latency is contributing, although faster storage will not fix a CPU-bound loop.

Document the workload that led to the decision: peak concurrent requests, PHP-FPM utilization, Apache worker counts, memory headroom, cache-hit behavior, and traffic sources. This prevents an upgrade from masking a recurring bot surge or defective code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A practical incident runbook

  1. Preserve access. Keep an administrator session and a rollback path; avoid repeated blind restarts.
  2. Sample the host. Record high-CPU Apache PIDs, memory, load, swap activity, and timestamps with top or an equivalent tool.
  3. Correlate requests. Use protected server-status with ExtendedStatus On and match PIDs to URLs and clients across several samples.
  4. Correlate logs. Group access and error-log entries by path, status, user agent, and burst timing.
  5. Check PHP-FPM. Compare active and idle workers with slow-request logging and upstream errors.
  6. Trace WordPress. Inspect uncached pages, wp-cron.php, loopbacks, admin-ajax.php, REST/XML-RPC, search/filter URLs, and plugin/theme tasks.
  7. Isolate code. Deactivate plugins in a controlled environment and reactivate one at a time if a plugin is implicated.
  8. Remove repeat work. Correct cache bypasses, add full-page or reverse-proxy caching for anonymous pages, and use persistent object caching where supported.
  9. Limit hostile volume. Apply targeted rate limits or CDN/WAF rules after confirming required dynamic paths still work.
  10. Tune concurrency. Adjust MaxRequestWorkers only from measured memory and workload data; monitor for queueing and swapping.
  11. Re-test and document. Compare the same metrics before and after each change, then record the cause and the permanent fix.

Choose the remedy by the problem you actually found

Remedy Diagnostic visibility Cache coverage Concurrency effect Traffic protection Operational control required
server-status plus process sampling Maps Apache PID to active request and client None None; observation only None Apache configuration and restricted admin access
PHP-FPM status and slow logging Shows PHP pool pressure and slow requests None Reveals pool saturation; does not reduce it None PHP-FPM pool configuration and protected status access
Full-page or reverse-proxy cache Cache logs identify hits and misses Strong for anonymous public responses Reduces origin concurrency on cache hits Limited unless paired with edge filtering Cache rules, purge controls, and dynamic-path exclusions
Plugin, theme, or cron fix Identifies the application execution path Only where the fixed path becomes cacheable Removes expensive work at its source None WordPress administration, code access, and rollback testing
MaxRequestWorkers adjustment Uses status and memory measurements None Trades queueing against RAM and swapping risk None Apache access and capacity monitoring
Rate limiting or CDN/WAF Edge and origin logs show blocked or passed traffic Can serve or protect cached public responses Reduces abusive origin concurrency Strongest for volumetric or repetitive bots Accurate rules and testing of required dynamic paths
More CPU/RAM or a different host Does not improve attribution None by itself Raises the available resource budget None unless architecture changes Migration planning and continued monitoring

Prevent the next CPU incident

  • Keep server-status and PHP-FPM status private but ready for the next incident.
  • Retain access and error logs long enough to compare normal and abnormal traffic patterns.
  • Alert on sustained CPU, swap activity, PHP-FPM saturation, rising request latency, and cache-hit deterioration rather than one instantaneous percentage.
  • Review scheduled WordPress events after installing or removing plugins so obsolete or duplicate hooks do not remain.
  • Recheck cache exclusions whenever adding login, commerce, personalization, API, or webhook features.
  • Load-test changes in a staging environment and record Apache, PHP-FPM, database, and memory behavior together.

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.