- Process lingering close asynchronously instead of tying up worker threads
(based on patch by Jeff Trawick).
- If the number of connections of a process is above
threads_per_child + WORKER_OVERCOMMIT * (idle_workers - 1)
(WORKER_OVERCOMMIT is fixed at 2, at the moment), or if all workers are busy,
don't accept new connections in that process. Such a dynamic connection limit
is necessary because we may have both async and non-async (ssl) connections.
WORKER_OVERCOMMIT should be a config option.
- Don't count idle workers of not-accepting processes against MinSpareThreads,
so that the parent will spawn new processes when necessary.
- If we receive a keep-alive request while all workers are busy, don't block
but close the connection immediately so that the client will re-connect to a
different process.
Related changes:
- Log what is going on at trace loglevels.
- Remove the bypass_push poll type flag, this code cannot be hit anymore
(if it ever could?).
- Add some macro helpers for dealing with timeout queues.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1137358 13f79535-47bb-0310-9956-ffa450edef68
Pull out the worker scoreboard cruft and start moving most
worker stuff to shm. Use slotmem for workers and provide
space for growth.
Redo logic:
ap_proxy_define_*
ap_proxy_create_*
ap_proxy_initialize_*
Right now just for workers, but lay framework for balancers
as well. The idea is to break out the functional parts
to make it easy for dynamics. Defining is simply describing
the worker, and tucking that info away. When we create, we
go ahead and create the shared memory, etc... Initialize
is simply to allow child process to access the shm...
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1058622 13f79535-47bb-0310-9956-ffa450edef68
modules can and should be able to use this scoreboard information.
Rename suggestions for such a directive are welcomed.
Note that mod_status toggles the default, to present the ExtendedStatus
for server operators, whenever it is loaded. Docs changes to follow.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@903020 13f79535-47bb-0310-9956-ffa450edef68
of only storing 63 bytes of the request, when the requests
are longer than that and only vary towards the end; eg:
GET /disk1/storage/apache/htdocs/images/image-store1/food/fruits/seeded/apples.jpg
GET /disk1/storage/apache/htdocs/images/image-store1/food/fruits/seeded/pears.jpg
GET /disk1/storage/apache/htdocs/images/image-store1/food/fruits/seeded/plums.jpg
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@590641 13f79535-47bb-0310-9956-ffa450edef68
types should be opaque, opaque types should be transparent.
Solve one aspect, follow the _by_indexes() example for ap_get_scoreboard_worker
family of functions, and the primary one will now accept the abstracted conn_rec
value of sbh to find that connections slot.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@587770 13f79535-47bb-0310-9956-ffa450edef68
need to do this, but until we create mod_proxy_structs.h
which can then be included by mod_proxy.h as well as scoreboard.h,
we'll make do.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@573555 13f79535-47bb-0310-9956-ffa450edef68
generation in the scoreboard so that mod_status can accurately
represent workers in processes which are gracefully terminating.
New child processes with worker MPM can take over slots of
individual threads within gracefully terminating processes.
Sometimes this is a problem (too many of these gracefully
terminating processes), so it is helpful to have mod_status
provide the information required to recognize these processes.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@156274 13f79535-47bb-0310-9956-ffa450edef68
with ap_ (this symbol must be exported.) If the others were desired to be
public, they should have been ap_xxx decorated.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@154216 13f79535-47bb-0310-9956-ffa450edef68
bottom (APR/system) up -- we can't give the client a 64bit API and
then cast it to 32bits internally without introducing security holes
on other platforms.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105572 13f79535-47bb-0310-9956-ffa450edef68
and completely contained in a file (SCOREBOARD_FILE) has been
removed. This does not affect scoreboards which are *mapped* to
files using named-shared-memory at all. This implies that scoreboards
must be based, at some level, on native shared memory (mmap, shm_open,
shmget, whatever), but the code has assumed that for quite awhile
now. Having the scoreboard be *based* on a file makes no sense today.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94306 13f79535-47bb-0310-9956-ffa450edef68
size of internal structures in the scoreboard, actually into the
scoreboard allow third-party applications to access those structures.
Submitted by: Adam Sussman <myddryn@vishnu.vidya.com>
Reviewed by: Aaron Bannert
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93523 13f79535-47bb-0310-9956-ffa450edef68
properly initialized.
Move ap_restart_time into the scoreboard global area so the child process
on non-forking platforms can have access to it.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93502 13f79535-47bb-0310-9956-ffa450edef68
create the scoreboard's shared memory segment. We now have the best of
both worlds:
if config specifies ScoreBoardFile
create name-based shared memory, errors are fatal
else /* we get to choose */
create anonymous shared memory
if ENOTIMPL
create name-based shared memory from DEFAULT_SCOREBOARD
else
errors are fatal
This gives us the flexibility to have anonymous shared memory (on platforms
that support it) as well as name-based shared memory when third-party
programs want access to our scoreboard.
The ap_scoreboard_fname static variable is now owned by the scoreboard.c
file, and no longer by the MPMs. The MPMs MUST NOT set ap_scoreboard_fname
to a default, since that will override the default creation logic and
only allow name-based segments.
Submitted by: Aaron Bannert
Reviewed by: Justin Erenkrantz
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93434 13f79535-47bb-0310-9956-ffa450edef68
The child processes use the child_init phase to reattach to the shared
memory. This makes Windows work like Unix, which should make it easier
for module authors to write portable modules.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93119 13f79535-47bb-0310-9956-ffa450edef68
mod_cgid stranded
a pre_mpm hook can now return failures, so problems in
ap_create_scoreboard percolate back to a place where Apache
can exit cleanly
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93055 13f79535-47bb-0310-9956-ffa450edef68
pointer math. This is required for portable scoreboards.
vhost becomes the 'vhost name string' so it now survives ap_generation
clicks. next was apparently never used.
This patch also accounts for the changes to the apr_shm api, and gives
Win32 the magic of a shared scoreboard.
Breakage aplenty on non-win32 platforms, I suspect, but this radical
surgery, and culling of unused functions, was really, really needed.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92791 13f79535-47bb-0310-9956-ffa450edef68