Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

How to Optimize RAM Usage for Apache and a LAMP Stack

A measurement-led guide to reducing Apache and LAMP memory pressure by coordinating Apache workers, PHP-FPM children, MySQL and operating-system headroom.
Length11 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The reliable way to reduce RAM use on an Apache LAMP server is to measure the memory used by Apache, PHP-FPM, MySQL and the operating system, then cap concurrency so their combined peak fits in physical RAM without swapping. In practice, that means choosing an appropriate Apache MPM, running PHP through PHP-FPM, setting Apache’s MaxRequestWorkers and PHP-FPM’s pm.max_children from observed process sizes, and reserving the remainder for MySQL and the OS.

There is no universal “RAM per Apache worker” number. A mostly static site, a PHP application with large responses, and a busy WordPress-style workload can have radically different resident memory. The settings below show how to derive limits from your own peak traffic rather than from a generic calculator.

As an Amazon Associate I earn from qualifying purchases.

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

Why RAM becomes a concurrency limit

Every request consumes capacity somewhere in the stack. Apache uses a child process in prefork or threads in worker and event. PHP-FPM adds one child process for each concurrently executing PHP request. MySQL uses its buffer pool, connection structures and per-session buffers. The kernel, filesystem cache, SSH, monitoring and short-lived command-line jobs also need headroom.

When the sum exceeds physical RAM, Linux starts reclaiming aggressively and may swap. Latency rises sharply, queues grow, and the machine can eventually invoke the out-of-memory killer. A high concurrency setting can therefore make a site slower, not faster. A smaller limit that keeps working sets in RAM usually produces more predictable response times.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

Use a planning budget rather than adding every configured maximum together as though all allocations are permanent:

RAM available for request workers = physical RAM − OS/cache reserve − MySQL budget − safety margin

Divide the resulting worker budget by a measured peak resident size for one Apache process, Apache thread group, or PHP-FPM child, as appropriate. Treat the result as an upper bound to validate under representative traffic, not as a guaranteed capacity figure.

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

Measure the server before editing configuration

Capture observations during a normal peak and during the busiest predictable period. A quiet test can hide the memory used by real application paths, uploads, image processing or reports.

  • Record installed physical RAM and whether swap is enabled. Note swap-in and swap-out activity, not just swap space consumed.
  • Identify the Apache MPM with apachectl -V and inspect loaded modules with apachectl -M. Confirm whether the site is using prefork, worker or event.
  • Measure Apache process resident set size (RSS) with your operating system’s process tools. For prefork, sample several children because request mix changes their size. For worker and event, measure the parent and child process footprint rather than assigning a separate full process to every thread.
  • Measure PHP-FPM child RSS at idle and at peak. A child handling a framework bootstrap, a media transformation or a large database result may be much larger than an idle child.
  • Measure MySQL RSS and observe buffer-pool usage, connection counts and per-process memory.
  • Record peak concurrent Apache requests, active PHP requests, queue lengths, request latency and error rates for the same time window.

Useful starting points on a Linux host include free -h, vmstat 1, ps or top for RSS, Apache’s status/scoreboard view, the PHP-FPM status page and MySQL’s process and global status views. Keep the observations with their date, traffic level and configuration so that a later comparison uses equivalent conditions.

Choose an Apache MPM and keep PHP out of Apache workers

Apache’s performance guidance calls RAM “the single biggest hardware issue affecting webserver performance.” The MPM determines how that RAM is used.

MPM Concurrency model Memory and compatibility implications When it is usually appropriate
prefork One process handles one request at a time. Each child has a separate process address space, so the per-request footprint is comparatively expensive. It is commonly required by non-thread-safe embedded modules such as traditional mod_php. Legacy applications or modules that cannot run safely in a threaded MPM.
worker Processes contain multiple request threads. Threads generally provide a smaller footprint than one process per request, but every loaded module must be thread-safe. Thread-safe deployments that do not need event MPM behavior.
event Threads handle active work while supporting threads manage some keep-alive and connection handling. Idle keep-alive connections do not tie up a main request thread in the same way as prefork. It still depends on thread-safe modules. Modern high-concurrency sites using an external application server such as PHP-FPM.

For new Apache installations, the PHP manual says, “Do not use mod_php for new installations.” Its recommended pattern is PHP-FPM behind mod_proxy_fcgi. PHP then runs in a separate pool, can be restarted independently, and is compatible with event MPM. With embedded mod_php, PHP is loaded into every Apache worker and generally forces prefork unless PHP was built thread-safe.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed

Decoupling does not eliminate memory use; it makes the two concurrency controls visible and independently tunable. Apache can serve static files and proxy requests while PHP-FPM limits the number of scripts executing at once.

Set Apache’s hard concurrency ceiling

MaxRequestWorkers is Apache’s primary hard cap. In prefork it is the maximum number of child processes. In worker and event it is the total number of request-handling threads across the server. Requests arriving after the limit are queued until a worker is available.

Derive a value from measured memory

  1. Reserve RAM for the kernel, filesystem cache, SSH, monitoring, cron jobs and short-lived spikes.
  2. Reserve the measured MySQL peak and the PHP-FPM budget before allocating Apache’s worker budget.
  3. For prefork, divide the remaining Apache budget by the high-percentile RSS of a busy child, including a safety margin. Do not use the smallest child or an idle sample.
  4. For worker or event, use the measured process footprint and validate the thread count against CPU, connection and application behavior. The relationship is not simply “one thread equals one full process.”
  5. Apply the lower of the memory-derived limit and the concurrency that the application and database can serve without excessive queueing.

For example, suppose a 16-GB host leaves 2 GB for the OS and cache, 4 GB for MySQL and 1 GB of safety margin. If measurements show that Apache may use 2 GB at the chosen MPM and traffic pattern, the initial limit must fit within that 2-GB envelope. The exact worker count comes from the sampled Apache footprint; it cannot be inferred from the machine’s RAM alone.

Do not inflate ServerLimit

ServerLimit sets the maximum number of Apache server processes that can be created. Raising it “just in case” allocates extra shared memory and does not create useful capacity by itself. Apache warns that setting ServerLimit and MaxRequestWorkers beyond what the system can support can prevent Apache from starting or make the host unstable. Keep both directives no higher than the measured and operationally justified range.

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

If prefork is unavoidable

Apache’s prefork guidance is explicit: make MaxRequestWorkers large enough for expected simultaneous requests but small enough that all children remain in physical RAM and the machine does not thrash. If increasing the value causes swap activity, lower it even if requests begin queueing; then address the application or add memory rather than allowing the kernel to page continuously.

Remove modules that the site does not use

Every loaded module can add code and data to Apache’s memory footprint. Review LoadModule entries and disable unused modules in a controlled staging or maintenance change. Apache’s performance documentation specifically recommends testing by commenting out unnecessary LoadModule directives, then checking configuration validity and application behavior.

Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)

Size PHP-FPM pools independently

PHP-FPM limits simultaneous PHP execution with pm.max_children. The process manager mode determines how aggressively idle workers are retained.

Mode How workers are created RAM behavior Trade-off
ondemand Children are created when requests arrive and can be removed after being idle. Lowest idle footprint on a quiet or bursty host. More cold-start latency when a burst creates new children.
dynamic Maintains configured spare workers and grows up to pm.max_children. Balances warm capacity with bounded memory. Requires sensible values for starting, minimum-spare and maximum-spare workers.
static Keeps exactly pm.max_children children. Predictable, but reserves the full child footprint even when traffic is low. Best only when the measured workload justifies a permanently warm pool.

The PHP manual defines pm.max_children as the maximum child count for dynamic and ondemand, and the fixed child count for static. Derive it from the RAM left after Apache, MySQL and the OS:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
pm.max_children = floor(PHP RAM budget ÷ measured peak RSS per PHP child)

Use a high-percentile or worst representative child size plus a safety margin. Do not multiply PHP’s memory_limit by the child count as though every request always reaches that ceiling. memory_limit is a per-script allocation ceiling; actual RSS also includes the PHP runtime, loaded extensions, allocator behavior and shared pages.

The current PHP core ini documentation lists a default memory_limit of 128M. Lowering it can protect a small machine, but an application that legitimately needs more memory will fail with an exhausted-memory error. Change it only after identifying the largest legitimate request paths and monitor application logs after the change.

Recycle children that grow over time

Set pm.max_requests to recycle a child after it has handled a defined number of requests. PHP documents this as a way to work around memory leaks in third-party code. Recycling limits the damage from gradual growth, but it is not a substitute for finding the leaking extension or application path. A very low value increases process churn; a very high value allows more accumulated memory before recycling.

Illustrative pool configuration

The following is an example of the directives to review, not a universal recommendation. Replace the numbers only after measuring the target pool and traffic:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC
pm = dynamic
pm.max_children = 24
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 8
pm.max_requests = 500

After changing a pool, reload PHP-FPM using the service manager for your distribution and confirm that the new children actually use the intended pool. A configuration reload does not prove that the resulting peak RSS is safe.

Coordinate MySQL with the web tier

A MySQL configuration intended for a database-only machine can consume the RAM that Apache and PHP require. Oracle’s 2025 shape-dependent defaults illustrate why copying a preset is unsafe:

Oracle MySQL service shape innodb_buffer_pool_size default max_connections default Interpretation on a shared LAMP host
MySQL.2.16GB 10,737,418,240 bytes (10 GiB) 1,000 Leaves substantially less than the nominal machine memory for Apache, PHP and the OS.
MySQL.8.64GB 51,539,607,552 bytes (48 GiB) 4,000 Values are shaped for that service, not for a web server sharing the host.

These are service-specific examples, not portable recommendations. On a shared machine, reserve the measured Apache and PHP peaks first, then fit the InnoDB buffer pool into the remainder. Set the connection ceiling to the concurrency the application can actually use; a large max_connections permits many simultaneous per-session allocations and can turn a connection storm into an out-of-memory event.

Watch buffer-pool hit behavior, active connections, query latency and MySQL RSS together. A smaller pool that avoids swap is often preferable to a larger pool that starves the web tier.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Verify the limits with observable signals

Enable the PHP-FPM status page only on an internal address or through an authenticated monitoring path. PHP documents fields including queue length, active, idle and total processes, maximum active processes, max children reached, memory peak and per-request memory.

  • A growing queue or repeated max children reached means the pool is saturated. First check whether requests are slow because of the database or application; raising the pool may merely increase contention.
  • A rising child RSS or memory peak means the per-child budget is too low for the selected concurrency. Investigate the request path before adding workers.
  • Apache’s scoreboard or status view shows busy workers, idle workers and waiting connections. Compare it with PHP-FPM active counts to determine whether the bottleneck is the web tier or the application tier.
  • Operating-system swap-in, swap-out, major faults and available memory reveal pressure that application counters can miss. MySQL process and memory metrics complete the picture.

Change one limit at a time and compare equivalent traffic windows. Record the setting, peak concurrency, latency, errors, RSS and swap behavior so that an apparent improvement can be distinguished from a quieter workload.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Troubleshoot common failure patterns

The host is swapping after a traffic increase

Reduce the effective Apache or PHP concurrency to keep the combined working set in RAM. Check whether a recent module, deployment or query increased per-worker memory. Do not respond by increasing ServerLimit or MaxRequestWorkers without a larger physical-memory budget.

Apache fails to start after a limit change

Validate the configuration and inspect the service log. An excessive ServerLimit or MaxRequestWorkers can exceed Apache’s shared-memory or system capacity. Return to the last known-good values, then raise limits incrementally only after measuring available RAM.

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.

Requests return gateway errors while RAM is available

Check whether PHP-FPM has reached pm.max_children, whether its listen socket is backed up, and whether slow database queries are holding children. If the queue is short-lived and latency is acceptable, a larger pool may help; if MySQL is saturated, more PHP children will worsen the contention.

Workers grow throughout the day

Inspect long-running requests and extensions for leaks. Set a measured pm.max_requests recycle point as containment, monitor the resulting process churn, and schedule a code or extension fix.

Lowering memory_limit breaks legitimate requests

Read the PHP error log and identify which operation needs the memory. Restore a value that supports the application’s real peak, then reduce concurrency or optimize that operation instead of imposing a ceiling below its requirements.

Worked sizing example

The arithmetic below is deliberately hypothetical; it demonstrates the method, not a benchmark. Assume a 16-GB server where measurements justify 2 GB for the OS and cache, 4 GB for MySQL, and 1 GB for short-lived spikes. That leaves 9 GB for Apache and PHP.

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.
Component Illustrative allocation Measured per-worker value Derived limit
Apache 2 GB 35 MB busy prefork child Approximately 58 children before additional safety adjustments
PHP-FPM 6 GB 180 MB peak child, including margin Approximately 34 children
Unassigned headroom 1 GB Not applicable Retained for bursts and measurement error

If the application’s database latency rises with 34 simultaneous scripts, the useful PHP limit may be lower. If the measured child size changes after a deployment, recalculate. The numbers are planning outputs from the stated assumptions, not promises that any other server will support the same concurrency.

A repeatable optimization procedure

  1. Establish a baseline during representative peak traffic: RAM, swap activity, CPU, Apache MPM, Apache RSS, PHP-FPM child RSS, MySQL RSS, concurrency, latency and errors.
  2. Remove unused Apache modules and verify the application before changing worker limits.
  3. For a new deployment, select a thread-safe worker or event MPM and route PHP through PHP-FPM and mod_proxy_fcgi. Keep prefork only where a required module or legacy application demands it.
  4. Reserve OS and MySQL memory, calculate an Apache budget and set MaxRequestWorkers below the point that causes swapping. Keep ServerLimit aligned rather than inflated.
  5. Choose ondemand, dynamic or static for each PHP-FPM pool based on idle-memory needs and cold-start tolerance. Set pm.max_children from measured child RSS and set pm.max_requests only as a measured leak-containment policy.
  6. Set PHP’s memory_limit high enough for legitimate requests, then use logs and status metrics to find unusually large paths instead of guessing.
  7. Fit MySQL’s buffer pool and connection ceiling into the remaining budget; do not import database-only presets.
  8. Apply one change, observe equivalent traffic, and keep the setting only if swap, latency, errors and queueing improve without starving another tier.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

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

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.