The framework and application spawners will be Ruby processes.
> b. In the process list, there is the Passenger Spawn Server, but there
> is also a longer path that looks like this in the list
> /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/
> ApplicationPoolServerExecutable 0 /usr/lib/ruby/gems/1.8/gems/
> passenger-2.2.4/bin/passenger-spawn-server
> It seems like thats the Passenger Spawn Server as well ... why is it
> repeated in the like that?
>
> c. Does the "Application Pool" referred to here
>
http://www.modrails.com/documentation/Architectural%20overview.html#_overview
> refer to the application instances generated by the Application Spawn
> Server.
> I think so, but the diagram is confusing because it says that "It
> should be noted that the Ruby on Rails application does not run in the
> same address space as Apache" but the Application pool appears to be
> in the "Apache" process in the diagram.
Yes, the application pool code directs each HTTP request to an
application instance that has been created by the spawn server. It
either chooses the most suitable existing one, or requests the spawn
server to create a new one.
When all Apache workers are threads of a single process, the
application pool can live in the Apache address space. However a
separate application pool server process is required when there are
multiple worker processes. This is the process you see in (b), which
is responsible for starting the spawn server.
> d. Theoretically, what kind of effect should increasing the number of
> worker processes available to Apache have on your application. Does it
> help performance? (assuming that running out of memory is not an
> issue).
To allow for some queuing of requests to each instance, the limit on
the number of Apache worker threads should be somewhat higher than the
maximum size you've set for the application pool, multiplied by the
number of threads you want each Rails process to handle, plus extra
workers to handle static assets.
The number of worker processes should be just sufficient to provide
the desired protection against crashes and memory leaks.