GuidesPersistent Perl on the Virtual Host Page 2

Persistent Perl on the Virtual Host Page 2




2. When you run Speedy on a virtual host, Speedy forks off another
version of itself for each user so it isn’t advisable that you run
every script with it. Speedy has a time-out variable that can be
set on each script that will keep the Speedy process running even
if the user quits using the script. If you set this time-out to
600 seconds it takes that long for the process to stop. This can
cause problems for the server if you suddenly have a lot of
Speedy processes that are sitting there waiting to quit. Under
heavy load you may run out of sockets since they hang around in a
TIME_WAIT state after closing. Most servers are set up to handle
at least 256 users so it shouldn’t be a problem as long as you
keep your time-outs at around 60 seconds.

If you have root access and are running the Apache Web server then
this is no problem because Speedy also comes with mod_speedy,
which keeps the program from forking another process for each
request. You can’t install mod_speedy without root access though.

By the way, mod_speedy doesn’t hook into the Apache Web server the
way mod_perl and FastCGI do so it’s a very safe way for Web farms
to implement persistence on their servers!

Installation

To install SpeedyCGI on a virtual host takes a little extra work
than a standard module, but it’s worth it. The first thing you
need to do is download the module from search.cpan.org,
then unpack it into a directory on your host. For those not
familiar with how to do this, here’s a step by step guide.

To unpack and install type the following commands at the telnet
prompt: (SpeedyCGI can’t be installed on NT so don’t waste your
time trying).

gunzip CGI-SpeedyCGI-1.8.3.tar.gz
tar -xvf CGI-SpeedyCGI-1.8.3.tar
cd CGI-SpeedyCGI-1.8.3
perl Makefile.PL PREFIX=/home/domain  (full path to your domain)
make
make test

Now here's the trick to get it to install because it will always
fail in it's default state. Depending on your path to perl this
might be a little different, but it will be easy to spot if the
make install fails.

Create a "bin" directory in your domain: /home/domain/bin

With Perl located in /usr/local/bin/ you may have to create the
directory /home/domain/local/bin. It appears that Speedy is trying
to emulate where Perl is installed on the server. If you get an
error and it complains about not being able to find the directory
then this is most likely the problem and you can simply create
the required directory and run make install again.

Once that directory is created, go back into the SpeedyCGI
directory and type:

make install

If all goes well you will now have Speedy installed. The shebang
line will be a little different than what you're used to, though.
The following line reflects that you are running the Speedy
executable in your own domain space.

#!/home/domain/bin/speedy  -w -- -t60

SpeedyCGI command line options will always follow the -- on the
shebang line. Any options before the -- are perl options. The
above line reflects a time-out of 60 seconds. There are some
other useful options so you should refer to the documentation to
get a thorough understanding of Speedy commands.

About the author:

Mark Porter is a Perl Monger and has been programming perl for
about three years. He currently owns his own business, imChat
Inc
which is merging with another business,
Balsa-Tech Inc. They sell business
intelligence software, do custom CGI programming and are currently
looking for startup capitol. Contact Mark at [email protected].

Latest Posts

Related Stories