Apache-ASP
view release on metacpan or search on metacpan
you cannot afford the extra startup time.
To see precompiling in action, set Debug to 1 for the Loader() and for your
application in general and watch your error_log for messages indicating
scripts being cached.
No .htaccess or StatINC
Don't use .htaccess files or the StatINC setting in a production system as
there are many more files touched per request using these features. I've
seen performance slow down by half because of using these. For eliminating
the .htaccess file, move settings into *.conf Apache files.
Instead of StatINC, try using the StatINCMatch config, which will check a
small subset of perl libraries for changes. This config is fine for a
production environment, and if used well might only incur a 10-20%
performance penalty, depending on the number of modules your system loads in
all, as each module needs to be checked for changes on a per request basis.
Turn off Debugging
Turn off system debugging by setting Debug to 0-3. Having the system debug
config option on slows things down immensely, but can be useful when
troubleshooting your application. System level debugging is settings -3
through -1, where user level debugging is 1 to 3. User level debugging is
much more light weight depending on how many $Reponse->Debug() statements
you use in your program, and you may want to leave it on.
Memory Sparing, NoCache
If you have a lot (1000's+) of scripts, and limited memory, set NoCache to
1, so that compiled scripts are not cached in memory. You lose about 10-15%
in speed for small scripts, but save at least 10K RAM per cached script.
These numbers are very rough and will largely depend on the size of your
scripts and includes.
Resource Limits
Make sure your web processes do not use too many resources like CPU or RAM
with the handy Apache::Resource module. Such a config might look like:
PerlModule Apache::Resource
PerlSetEnv PERL_RLIMIT_CPU 1000
PerlSetEnv PERL_RLIMIT_DATA 60:60
If ever a web process should begin to take more than 60M ram or use more
than 1000 CPU seconds, it will be killed by the OS this way. You only want
to use this configuration to protect against runaway processes and web
program errors, not for terminating a normally functioning system, so set
these limits HIGH!
SEE ALSO
perl(1), mod_perl(3), Apache(3), MLDBM(3), HTTP::Date(3), CGI(3),
Win32::OLE(3)
NOTES
Many thanks to those who helped me make this module a reality. With Apache +
ASP + Perl, web development could not be better!
Special thanks go to my father Kevin & wife Lina for their love and support
through it all, and without whom none of it would have been possible.
Other honorable mentions include:
!! Gregory Youngblood, Thanos Chatziathanassiou, & Tsirkin Evgeny for keeping the flame alive!
:) Doug MacEachern, for moral support and of course mod_perl
:) Helmut Zeilinger, Skylos, John Drago, and Warren Young for their help in the community
:) Randy Kobes, for the win32 binaries, and for always being the epitome of helpfulness
:) Francesco Pasqualini, for bug fixes with stand alone CGI mode on Win32
:) Szymon Juraszczyk, for better ContentType handling for settings like Clean.
:) Oleg Kobyakovskiy, for identifying the double Session_OnEnd cleanup bug.
:) Peter Galbavy, for reporting numerous bugs and maintaining the OpenBSD port.
:) Richard Curtis, for reporting and working through interesting module
loading issues under mod_perl2 & apache2, and pushing on the file upload API.
:) Rune Henssel, for catching a major bug shortly after 2.47 release,
and going to great lengths to get me reproducing the bug quickly.
:) Broc, for keeping things filter aware, which broke in 2.45,
& much help on the list.
:) Manabu Higashida, for fixes to work under perl 5.8.0
:) Slaven Rezic, for suggestions on smoother CPAN installation
:) Mitsunobu Ozato, for working on a japanese translation of the site & docs.
:) Eamon Daly for persistence in resolving a MailErrors bug.
:) Gert, for help on the mailing list, and pushing the limits of use on Win32
in addition to XSLT.
:) Maurice Aubrey, for one of the early fixes to the long file name problem.
:) Tom Lancaster, for pushing the $Server->Mail API and general API discussion.
:) Ross Thomas, for pushing into areas so far unexplored.
:) Harald Kreuzer, for bug discovery & subsequent testing in the 2.25 era.
:) Michael Buschauer for his extreme work with XSLT.
:) Dariusz Pietrzak for a nice parser optimization.
:) Ime Smits, for his inode patch facilitating cross site code reuse, and
some nice performance enhancements adding another 1-2% speed.
:) Michael Davis, for easier CPAN installation.
:) Brian Wheeler, for keeping up with the Apache::Filter times,
and pulling off filtering ASP->AxKit.
:) Ged Haywood, for his great help on the list & professionally.
:) Vee McMillen, for OSS patience & understanding.
:) Craig Samuel, at LRN, for his faith in open source for his LCEC.
:) Geert Josten, for his wonderful work on XML::XSLT
:) Gerald Richter, for his Embperl, collaboration and competition!
:) Stas Bekman, for his beloved guide, and keeping us all worldly.
:) Matt Sergeant, again, for ever the excellent XML critique.
:) Remi Fasol + Serge Sozonoff who inspired cookieless sessions.
:) Matt Arnold, for the excellent graphics !
:) Adi, who thought to have full admin control over sessions
:) Dmitry Beransky, for sharable web application includes, ASP on the big.
:) Russell Weiss again, for finding the internal session garbage collection
behaving badly with DB_File sensitive i/o flushing requirements.
:) Tony Merc Mobily, inspiring tweaks to compile scripts 10 times faster
:) Paul Linder, who is Mr. Clean... not just the code, its faster too !
Boy was that just the beginning. Work with him later facilitated better
session management and XMLSubsMatch custom tag technology.
:) Russell Weiss, for being every so "strict" about his code.
:) Bill McKinnon, who understands the finer points of running a web site.
:) Richard Rossi, for his need for speed & boldly testing dynamic includes.
:) Greg Stark, for endless enthusiasm, pushing the module to its limits.
:) Marc Spencer, who brainstormed dynamic includes.
:) Doug Silver, for finding most of the bugs.
:) Darren Gibbons, the biggest cookie-monster I have ever known.
:) Ken Williams, for great teamwork bringing full SSI to the table
:) Matt Sergeant, for his great tutorial on PerlScript and love of ASP
:) Jeff Groves, who put a STOP to user stop button woes
:) Alan Sparks, for knowing when size is more important than speed
:) Lincoln Stein, for his blessed CGI.pm module
( run in 0.844 second using v1.01-cache-2.11-cpan-df04353d9ac )