Apache(XAMPP) not respond when high load
<p>My computer has 8 core and 16 GB RAM, in case of high traffic, my web server (apache - xampp) can't be accessed when the RAM hit 3GB. My CPU only used on 20%. And I need to restart the web server.</p>

<p>I set this on php.ini</p>

<pre><code>max_execution_time=60
memory_limit=10128M
</code></pre>

<p>is there any suggestion to optimize my server, so that my server can serve till RAM/CPU used to it's limit?</p>

<hr>

<p>edit:
my httpd-mpm.conf</p>

<pre><code>#
# Server-Pool Management (MPM specific)
# 

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
# Note that this is the default PidFile for most MPMs.
#
&lt;IfModule !mpm_netware_module&gt;
    PidFile "logs/httpd.pid"
&lt;/IfModule&gt;

#
# Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.
#

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
&lt;IfModule mpm_prefork_module&gt;
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      150
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# worker MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
&lt;IfModule mpm_worker_module&gt;
    StartServers             2
    ServerLimit        500
    MinSpareThreads         25
    MaxSpareThreads         75 
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# event MPM
# StartServers: initial number of server processes to start
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestWorkers: maximum number of worker threads
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
&lt;IfModule mpm_event_module&gt;
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# NetWare MPM
# ThreadStackSize: Stack size allocated for each worker thread
# StartThreads: Number of worker threads launched at server startup
# MinSpareThreads: Minimum number of idle threads, to handle request spikes
# MaxSpareThreads: Maximum number of idle threads
# MaxThreads: Maximum number of worker threads alive at the same time
# MaxConnectionsPerChild: Maximum  number of connections a thread serves. It
#                         is recommended that the default value of 0 be set
#                         for this directive on NetWare.  This will allow the
#                         thread to continue to service requests indefinitely.
&lt;IfModule mpm_netware_module&gt;
    ThreadStackSize      65536
    StartThreads           250
    MinSpareThreads         25
    MaxSpareThreads        250
    MaxThreads            1000
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# OS/2 MPM
# StartServers: Number of server processes to maintain
# MinSpareThreads: Minimum number of idle threads per process, 
#                  to handle request spikes
# MaxSpareThreads: Maximum number of idle threads per process
# MaxConnectionsPerChild: Maximum number of connections per server process
&lt;IfModule mpm_mpmt_os2_module&gt;
    StartServers             2
    MinSpareThreads          5
    MaxSpareThreads         10
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxConnectionsPerChild: maximum number of connections a server process serves
&lt;IfModule mpm_winnt_module&gt;
    ThreadsPerChild        1150
    MaxConnectionsPerChild   0
&lt;/IfModule&gt;

# The maximum number of free Kbytes that every allocator is allowed
# to hold without calling free(). In threaded MPMs, every thread has its own
# allocator. When not set, or when set to zero, the threshold will be set to
# unlimited.
&lt;IfModule !mpm_netware_module&gt;
    MaxMemFree            2048
&lt;/IfModule&gt;
&lt;IfModule mpm_netware_module&gt;
    MaxMemFree             100
&lt;/IfModule&gt;
</code></pre>