Browse Prior Art Database

Common Gateway Interface (CGI) Daemon to Reduce Load on Multithreaded AIX Webservers

IP.com Disclosure Number: IPCOM000123253D
Original Publication Date: 1998-Aug-01
Included in the Prior Art Database: 2005-Apr-04
Document File: 1 page(s) / 60K

Publishing Venue

IBM

Related People

Nesbitt, R: AUTHOR

Abstract

Disclosed is the design for a CGI daemon which provides significant throughput optimizations on multithreaded AIX webservers. AIX fork() system call processing performance does not scale linearly with the number of threads in the application calling fork(); when a multithreaded webserver is configured with a high number of threads, processing which uses fork() causes significant performance degradation. CGI processing in most current Unix webserver architectures requires the use of the fork() system call.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Common Gateway Interface (CGI) Daemon to Reduce Load on Multithreaded
AIX Webservers

   Disclosed is the design for a CGI daemon which provides
significant throughput optimizations on multithreaded AIX
webservers.  AIX fork() system call processing performance does not
scale linearly with the number of threads in the application calling
fork(); when a multithreaded webserver is configured with a high
number of threads, processing which uses fork() causes significant
performance degradation.  CGI processing in most current Unix
webserver architectures requires the use of the fork() system call.

   CGI applications require a prepared set of environment
strings which describe the request parameters, an input pipe for
receiving content data from the client, and an output pipe for
sending the results back to the client.  Both of those pipes
originate from the webserver, and are opened as file descriptors 0
and 1 (stdin and stdout).  A CGI application can obtain all
pertinent data about a request from its environment, its arguments,
and from stdin, and can send all data out via stdout, without
requiring any special network or IPC system calls.

   Most current webserver architectures start the CGI
application by calling the fork() system call, then in the child
process closing all file descriptors and reopening the stdin and
stdout file descriptors with an endpoint from two separate pipes.
The child then calls the exec() system call, providing a set of
argument and environment strings which provide additio...