Hi Simon,

My understanding is that "persistent connections" and "persistent CGI" are
two separate and distinct things.  Persistent connections keeps a socket
open, and an HTTP server thread locked, but any CGI request from any browser
may be routed to any one of the BCI jobs for processing.  In contrast,
Persistent CGI establishes a single channel of communication between one
client and one active CGI program for the purpose of maintaining client
state.

My comments about the number of CGI activations pertained to the use of
persistent connections, combined with named activation.  Named activation is
a requirement for interactive CGI.  Otherwise, program initialization nearly
immediately leads to terrible performance.  With named activation, the only
way to deactivate a CGI program is to shut down the entire HTTP server.

What happens when a busy site uses both persistent connections and runs all
CGI programs under one (or more) shared activation group?  The HTTP Server
routes new CGI requests to the next available BCI job for processing.  If
all the BCI jobs are busy at the moment, a new BCI job is started.  The
CHGHTTPA command is used to specify the number of HTTP server threads, and
consequently, the maximum number of BCI jobs to start.

The HTTP Server's non-discriminate method of routing eventually leads to
each one of the BCI jobs having an active instance of each one of the CGI
programs.  40 BCI Jobs times 40 CGI programs = 1600 active CGI instances.

To test this, you might download the JMeter stress test tool from
www.apache.org, run some CGI programs under a shared activation group, then
use WRKJOB to view activation groups, allocated resources, open files, etc.
for each one of the HTTP Server BCI Jobs.

Try to integrate a healthy number of CGI programs, with a healthy number of
HTTP Server threads, and persistent connections, and it becomes a challenge
to tune performance.  This architecture will never be a good alternative to
5250.  Imagine an ERP system consisting of, say 500 hundred CGI programs,
and 100 active users.  That could lead to 50,000 active programs for the OS
to manage!

Nathan M. Andelin
www.relational-data.com

From: "Simon Coulter" <shc@flybynight.com.au>
> Hello Nathan,
>
> You wrote:
> > To support 40 concurrent users, you probably need at least 40 HTTP
Server
> >threads.  However, that may lead to 40 active BCI jobs.  Each one of
those
> >jobs could activate your 40 CGI programs.  That could lead to 1600 CGI
> >activations if the CGI programs run under a named activation group.  1600
> >active CGI instances may put a burden on OS/400 memory management.
>
> Surely that's only the case if you put each CGI program in its own named
> activation group?  If the CGI programs are part of the same application
why
> would they not be in the same activation group?  Thus one activation group
> per BCI job.  That should be manageable on any size AS/400.
>
> Persistent CGI requires named activation groups -- not that the names be
> different.
>
> Regards,
> Simon Coulter.




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.