Apache /fcgi: prevent starting of multiple fcgi processes

hi,

I am using ruby-fcgi (http://sugi.nemui.org/prod/ruby-fcgi/) with apache
1.3x.

under heavy load, apache begins to start other processes of my fcgi-script.
since I am caching some basic code in this main process, I want every
request to be handled by the same fcgi-script. So how can I force this
behaviour?

Any ideas?

benny

···

--

benny wrote:

hi,

I am using ruby-fcgi (http://sugi.nemui.org/prod/ruby-fcgi/\) with apache
1.3x.

under heavy load, apache begins to start other processes of my
fcgi-script. since I am caching some basic code in this main process, I
want every request to be handled by the same fcgi-script.

errr! meant to say "I want every request to be handled by the same
*process*"

benny

google fastcgi and folows links to apache config directive for how to do this.
a warning : caching state is __exactly__ analogous to memory leak under nearly
all circumstances. consider which, if any, guarantee the cached data is
scrubbed and what limits the cache size.

cheers.

-a

···

On Sun, 24 Apr 2005, benny wrote:

hi,

I am using ruby-fcgi (http://sugi.nemui.org/prod/ruby-fcgi/\) with apache
1.3x.

under heavy load, apache begins to start other processes of my fcgi-script.
since I am caching some basic code in this main process, I want every
request to be handled by the same fcgi-script. So how can I force this
behaviour?

Any ideas?

--

email :: ara [dot] t [dot] howard [at] noaa [dot] gov
phone :: 303.497.6469
although gold dust is precious, when it gets in your eyes, it obstructs
your vision. --hsi-tang

===============================================================================

benny wrote:

hi,

I am using ruby-fcgi (http://sugi.nemui.org/prod/ruby-fcgi/\) with apache
1.3x.

under heavy load, apache begins to start other processes of my
fcgi-script. since I am caching some basic code in this main process, I
want every request to be handled by the same fcgi-script.

errr! meant to say "I want every request to be handled by the same
*process*"

Apache directives should do the trick:

FastCgiServer -processes 1
FastCgiConfig -minProcesses 1 -maxProcesses 1

See http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

I assume you have some state you are trying to maintain?
In general, I would have to waggle my finger in warning
against such practice :slight_smile:

I will hopefully have my scgi code finished soon, I was
thinking about including an option to run a persistent
sort of an app on it. We shall see.

benny

E

···

Le 24/4/2005, "benny" <listen@marcrenearns.de> a écrit:

--
template<typename duck>
void quack(duck& d) { d.quack(); }

Saynatkari wrote:

benny wrote:

hi,

I am using ruby-fcgi (http://sugi.nemui.org/prod/ruby-fcgi/\) with apache
1.3x.

under heavy load, apache begins to start other processes of my
fcgi-script. since I am caching some basic code in this main process, I
want every request to be handled by the same fcgi-script.

errr! meant to say "I want every request to be handled by the same
*process*"

Apache directives should do the trick:

FastCgiServer -processes 1
FastCgiConfig -minProcesses 1 -maxProcesses 1

See http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

in case, anyone other should need it:
the complete syntax is (apache 1.3.x)

<IfModule mod_fastcgi.c>
        FastCgiServer /path/to/script.fcgi -processes 1
        FastCgiConfig -minProcesses 1 -maxProcesses 1 -processSlack 1
</IfModule>

I assume you have some state you are trying to maintain?
In general, I would have to waggle my finger in warning
against such practice :slight_smile:

why? its simply that I have build a framework around the fcgi-script and
want to avoid this framework to be reloaded. In fact this was propagaded as
advantage of fastcgi: that a script doesn't have to be loaded on each
request.

my framework got so large that I don't want it so be several times in RAM.

but I am very interested to hear what disadvantages this configuration might
have to me.
is it simply an issue of threads-performance vs. RAM overhead?

benny

···

Le 24/4/2005, "benny" <listen@marcrenearns.de> a écrit:

but I am very interested to hear what disadvantages this configuration might
have to me.
is it simply an issue of threads-performance vs. RAM overhead?

benny

I use 2 * number of CPUs after doing some benchmarking.

The disadvantage to your configuration is that if you have more than 1 CPU. You might find 1 * number of CPUs more to your liking...

benny wrote:

why? its simply that I have build a framework around the fcgi-script and
want to avoid this framework to be reloaded. In fact this was propagaded as
advantage of fastcgi: that a script doesn't have to be loaded on each
request.

Hmm... I've been wondering for some time if Instiki can be run under FCGI this way (it has to be only one process for each storage, due to Madeleine persistence).

···

--
Best regards,

Alexey Verkhovsky

Ruby Forum: http://ruby-forum.org (moderator)
RForum: http://rforum.andreas-s.net (co-author)
Instiki: http://instiki.org (maintainer)

* benny <listen@marcrenearns.de> [0454 20:54]:

my framework got so large that I don't want it so be several times in RAM.

but I am very interested to hear what disadvantages this configuration might
have to me.
is it simply an issue of threads-performance vs. RAM overhead?

You'll only be able to serve one client at a time, unless I misunderstand fcgi's
process loop model.

···

--
'This must be Thursday. I never could get the hang of Thursdays.'
    -- Arthur Dent
Rasputin :: Jack of All Trades - Master of Nuns