Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: General questions on optimizing Perl performance

by ajt (Prior)
on Sep 06, 2002 at 11:50 UTC ( #195613=note: print w/ replies, xml ) Need Help??


in reply to General questions on optimizing Perl performance

Samn

You don't say but I'm assuming you are running your Perl application via CGI, in which case the server is having to fork off a copy of Perl everytime a page is viewed, then close it down once it's finished with it. Unless you have thought of caching this is for EVERY page view, too. This uses up loads of memory & CPU and is a good way to make you unpopular with the system admin team.

Popular web sites that use Perl a lot, use mod_Perl, which starts the Perl code once when the server starts, and keeps it in memory. This means that a fresh copy of Perl is not started up for every page view.

Chances are you won't have access to mod_Perl, so you sys admin has suggested PHP instead, as they probably have PHP configured for use.

See also: Perl/CGI Performance for a Shopping Cart


--
ajt


Comment on Re: General questions on optimizing Perl performance
Re: Re: General questions on optimizing Perl performance
by Samn (Monk) on Sep 06, 2002 at 12:01 UTC
    A follow up question - Does this require changing my scripts (at least, substantially) or is it a plug-in to an Apache server that just boosts Perl as soon as it's up and running?

    Yes, I'm running via CGI. I'm one of those who always forget that Perl, astoundingly enough, can be used for more than just websites! :) Thanks for the info.

      Check out the mod_perl website. They have a section that explains the transition. It looks fairly painless, IF mod_perl's already installed.

      I'm guessing that if it was, though, your host would have suggested it. You may have to go the php route.
      --
      Mike

      Assuming you have mod_Perl available, which is alas mostly not the case, if you have written your scripts well, you can more or less make them run in "PerlRun" mode, which will run many CGI scripts more or less unmodified under mod_Perl, and deliver a measureable performance boost by avoiding all that forking.

      Ideally you want to create Apache::Registry scripts, where you can write normal Perl, and have Apache/mod_Perl compile and cache it for you. You have to make sure you have written good code, as any problems will bring down the whole web server - and the fear of this is an oft quoted reason why most hosting companies won't offer mod_Perl.

      To get the most out of mod_Perl you'd skip the CGI emulation of the above aproaches, and write pure Perl directly into Apache, which is very cool, and not for the feint of heart.

      I don't claim to be a mod_Perl expert, so I'm sure some other more learned monks can offer additional advice. I'd have a look here for a start though:

      Update: Extra links added.


      --
      ajt

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://195613]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (5)
As of 2014-09-18 05:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (108 votes), past polls