Re: [OT] (apache question) Working around MaxClients?
> I have a high traffic website (looks like 200 GB output per month, > something around 10-20 hits per day) hosted on a commercial > service. The service does not limit my bandwidth usage, but they limit the > number of concurrent Apache process that I can have to 41. This causes the > server to delay accepting new connections during peak times. That seems pretty arbitrary. They use that instead of some kind of memory or CPU cap? > My account is a "virtual server"; what this means is that I have access to > the Apache httpd.conf files and can restart the Apache daemon, but do not > have the priviledge to bind a program to port 80 (so I can't put thttpd on > port 80). That rules out some obvious solutions like lingerd and squid (which I think uses a select loop). Sounds like they've made it so there's nothing you can do except try to server your content faster. You could look at Apache::Compress. - Perrin
Re: [OT] SSL ,Apache Keep alive
this is no longer a mod_perl question but, check out: http://www.modssl.org/docs/2.8/ssl_reference.html#ToC5 ->> SSLSessionCache i'm am far from an SSL expert, but this should help minimize the SSL authorization overhead. -- ___cliff [EMAIL PROTECTED]http://www.genwax.com/ Sachin Lakhanpal wrote: > Hello , > > i am trying to understand what am i supposed to come up with , so > here i have a client application trying to do a SECURE HTTP POST to the apache >webserver . > > The data to be posted is huge running in megs, so what we are doing > is we are at the client end splitting this data in smaller chunks . > > so heres what we want , the client is working with raw sockets to > open a socket to the webserver and start the posting,we don't want to > get tied to the fact that after each post of a small chunk we will > have to close the socket and do a post for the next chunk of data and > so on,there would be an unacceptable over head of SSL authorization > everytime the socket is opened. > > so i have a question regarding the Keep alive option on > apache,would this option help us here so that initially when the > client opens a socket to the webserver SSL authorization takes place and from then >on this same connection (same session) SSL > authorization is not required for successive post requests. >
SSL ,Apache Keep alive
Hello , i am trying to understand what am i supposed to come up with , so here i have a client application trying to do a SECURE HTTP POST to the apache webserver . The data to be posted is huge running in megs, so what we are doing is we are at the client end splitting this data in smaller chunks . so heres what we want , the client is working with raw sockets to open a socket to the webserver and start the posting,we don't want to get tied to the fact that after each post of a small chunk we will have to close the socket and do a post for the next chunk of data and so on,there would be an unacceptable over head of SSL authorization everytime the socket is opened. so i have a question regarding the Keep alive option on apache,would this option help us here so that initially when the client opens a socket to the webserver SSL authorization takes place and from then on this same connection (same session) SSL authorization is not required for successive post requests. Any help is appreciated, Thanks, Sachin Lakhanpal --== Sent via Deja.com ==-- http://www.deja.com/
Re: [OT] RE: (apache question) Working around MaxClients?
# Doesn't work. Children still get tied up serving requests. #ProxyPass / http://www.animewallpapers.com:8080/ #ProxyPassReverse / http://www.animewallpapers.com:8080/ That doesn't get me around the limit of 41 Apache processes... -Philip Mak ([EMAIL PROTECTED]) On Thu, 22 Feb 2001, Stathy Touloumis wrote: > Why don't you setup apache to do proxying? > > > I have a high traffic website (looks like 200 GB output per month, > > something around 10-20 hits per day) hosted on a commercial > > service. The service does not limit my bandwidth usage, but they limit the > > number of concurrent Apache process that I can have to 41. This causes the > > server to delay accepting new connections during peak times. > > > > My account is a "virtual server"; what this means is that I have access to > > the Apache httpd.conf files and can restart the Apache daemon, but do not > > have the priviledge to bind a program to port 80 (so I can't put thttpd on > > port 80). > > > > I was thinking of serving the HTML files from Apache and the JPG files > > from thttpd (thttpd uses select() so it always only uses up one process, > > no matter how many connections it's handling) on port 8080, but there's > > one disadvantage: People who browse my site from behind certain firewalls > > can only see port 80. > > > > Does anyone know of a way to configure Apache so that it will pass port 80 > > traffic onto port 8080 somehow, without having access to modify the > > binary? It would have to do this without needing to spawn a child for > > every request though. Or is this impossible?
[OT] RE: (apache question) Working around MaxClients?
Why don't you setup apache to do proxying? > I have a high traffic website (looks like 200 GB output per month, > something around 10-20 hits per day) hosted on a commercial > service. The service does not limit my bandwidth usage, but they limit the > number of concurrent Apache process that I can have to 41. This causes the > server to delay accepting new connections during peak times. > > My account is a "virtual server"; what this means is that I have access to > the Apache httpd.conf files and can restart the Apache daemon, but do not > have the priviledge to bind a program to port 80 (so I can't put thttpd on > port 80). > > I was thinking of serving the HTML files from Apache and the JPG files > from thttpd (thttpd uses select() so it always only uses up one process, > no matter how many connections it's handling) on port 8080, but there's > one disadvantage: People who browse my site from behind certain firewalls > can only see port 80. > > Does anyone know of a way to configure Apache so that it will pass port 80 > traffic onto port 8080 somehow, without having access to modify the > binary? It would have to do this without needing to spawn a child for > every request though. Or is this impossible?
(apache question) Working around MaxClients?
Hello, I have a high traffic website (looks like 200 GB output per month, something around 10-20 hits per day) hosted on a commercial service. The service does not limit my bandwidth usage, but they limit the number of concurrent Apache process that I can have to 41. This causes the server to delay accepting new connections during peak times. My account is a "virtual server"; what this means is that I have access to the Apache httpd.conf files and can restart the Apache daemon, but do not have the priviledge to bind a program to port 80 (so I can't put thttpd on port 80). I was thinking of serving the HTML files from Apache and the JPG files from thttpd (thttpd uses select() so it always only uses up one process, no matter how many connections it's handling) on port 8080, but there's one disadvantage: People who browse my site from behind certain firewalls can only see port 80. Does anyone know of a way to configure Apache so that it will pass port 80 traffic onto port 8080 somehow, without having access to modify the binary? It would have to do this without needing to spawn a child for every request though. Or is this impossible? Thanks, -Philip Mak ([EMAIL PROTECTED]) P.S. Is there a mailing list for general Apache questions somewhere? I can't seem to find one.
[ANNOUNCE] Apache::FileMan 0.06c
FileMan provides a file manager for a web sites through a web browser. It is a extensive rewrite of the Apache::AutoIndex.pm module (written by Philippe M. Chiasson), which in turn was a remake of the autoindex Apache module. FileMan can provide the same functionality as AutoIndex.pm and can be used to both navigate and manage the web site. This version (0.06c) corrects an Apache::Language problem displaying 1's. Special thanks goes out to "Aaron Johnson" <[EMAIL PROTECTED]> and his co-worker Ken Clark (who work for ProVillage), for finding the Language problem and making performance suggestions that have been incorporated. The latest release can be found at: httpd://www.xorgate.com/FileMan An on line demo is available at: httpd://www.xorgate.com/FileMan/demo If you have any questions, comments, or success stories please provide it to me, so that a good user base can be established before committing the code to CPAN.
Re: Apache::ASP Troubles
"Boeringa, Michael" wrote: > > I recently installed and confiugured Linux-Mandrake 7.2 on my machine. I was > trying to get Apache up and running and found that Mandrake 7.2 runs two > versions of Apache 1.3.14 - the regular httpd Daemon (p80) and a httpd-perl > Daemon (p8007) that is set up in httpd.conf to proxy all cgi-scripts to the > httpd-perl daemon runing on port 8007. My problem is that when I try to add > the structure or and structures to set up the > Apache::ASP in the httpd.conf file it does not understand the PerlHandler > directive. I took out the structure and placed it into the > > httpd-perl.conf but when I type the URL of the ASP demos on the web server > all it does is print the source on the screen. I cannot get the webserver to > process the ASP. Please help! > Try doing what's suggested at http://www.apache-asp.org/install.html#Quick%20Start Its a matter of telling Apache which files to let Apache::ASP handle. The above link suggests you can start with letting the ./site/eg/.htaccess activate the example files. -- Josh _ Joshua Chamas Chamas Enterprises Inc. NodeWorks >> free web link monitoring Huntington Beach, CA USA http://www.nodeworks.com1-714-625-4051
Apache::ASP Troubles
I recently installed and confiugured Linux-Mandrake 7.2 on my machine. I was trying to get Apache up and running and found that Mandrake 7.2 runs two versions of Apache 1.3.14 - the regular httpd Daemon (p80) and a httpd-perl Daemon (p8007) that is set up in httpd.conf to proxy all cgi-scripts to the httpd-perl daemon runing on port 8007. My problem is that when I try to add the structure or and structures to set up the Apache::ASP in the httpd.conf file it does not understand the PerlHandler directive. I took out the structure and placed it into the httpd-perl.conf but when I type the URL of the ASP demos on the web server all it does is print the source on the screen. I cannot get the webserver to process the ASP. Please help! Thanks, Mike Boeringa
Re: Apache/mod_perl/Win2K gpfault finally resolved?
On Tue, 20 Feb 2001, William A. Rowe, Jr. wrote: > Folks, > > any of you in a position to grab the current Apache tree from CVS and build > Apache plus mod_perl, and see if the gpfault is gone, here is the 'unpatch' for > John Sterling's quick hack: my 'quick hack' doesn't work anymore anyways because of some recent apache changes regarding the console. I just built apache from head, modperl from head, and it still crashes - so its still unresolved. i'll build debug versions and see if I can find any clarity. sterling
Re: Apache::ASP Undefined symbol "Perl_Tstack_sp_ptr"
CioccarelliA wrote: > > Hi, > > I am trying to get Apache ASP to work but haven't had a lot of luck. I > have Apache 1.3.17 compiled with mod_ssl, php3 and mod_perl (which is > as a module). Everyting is working fineexcept ASP pages. I am trying the > demo ones included but each time I try I get the following in the error > log. > > /usr/libexec/ld-elf.so.1: > /usr/local/lib/perl5/5.6.0/i386-freebsd-multi/auto/SDBM_File/SDBM_File.so: > Undefined symbol "Perl_Tstack_sp_ptr" > There is something wrong with your perl build. I would recommend rebuilding it so that SDBM_File works, which is a standard module that comes with perl & that Apache::ASP uses. If you don't wan't to deal with it, you can comment out instances of: use MLDBM; use SDBM_File; in ASP.pm and then set PerlSetVar NoState 1, but you won't get $Session or $Application objects. If you wanted a $Session still, you could then use Apache::Session to initialize $Session in your global.asa Script_OnStart and it would be much the same for you with $Session available to all your scripts. To test your perl for SDBM_File working, you can do something like perl -MSDBM_File -e ';' which will at least test the module for loading. If you want to rebuild your perl, I'd recommend installing it into another part of your system, so if your old perl were in /usr/... then I'd install the new perl in /usr/local/..., this way so you don't have to deal with one perl overlaying another possibly. Then you'd have to rebuild mod_perl against your new perl. -- Josh _ Joshua Chamas Chamas Enterprises Inc. NodeWorks >> free web link monitoring Huntington Beach, CA USA http://www.nodeworks.com1-714-625-4051
Apache::ASP Undefined symbol "Perl_Tstack_sp_ptr"
Hi, I am trying to get Apache ASP to work but haven't had a lot of luck. I have Apache 1.3.17 compiled with mod_ssl, php3 and mod_perl (which is as a module). Everyting is working fineexcept ASP pages. I am trying the demo ones included but each time I try I get the following in the error log. /usr/libexec/ld-elf.so.1: /usr/local/lib/perl5/5.6.0/i386-freebsd-multi/auto/SDBM_File/SDBM_File.so: Undefined symbol "Perl_Tstack_sp_ptr" Any ideas? Regards, Adam Cioccarelli
Re: [OT] Re: Rotating Apache logs
You may be aware of this, but cronolog is another option: http://www.ford-mason.co.uk/resources/cronolog/ Mike - Original Message - From: "Steve Reppucci" <[EMAIL PROTECTED]> To: "Terry Newnham" <[EMAIL PROTECTED]> Cc: "mod_perl list" <[EMAIL PROTECTED]> Sent: Thursday, February 22, 2001 2:11 PM Subject: [OT] Re: Rotating Apache logs > > This is definitely off topic for this list, however... > > I'm not exactly sure what you're asking here, but if what you're asking is > "how do I rotate logfiles without doing a hard stop/start cycle?", then > the answer is (from the command line...) rename the open logfiles, then > send the server either a SIGHUP or a SIGUSR1, which will cause it to > reopen its logfiles. > > SIGHUP does it "forcefully" (existing requests will aborted), while > SIGUSR1 does it "gracefully", allowing each child server currently > handling requests to complete the request before restarting it. > > If you use the 'apachectl' control script included in the apache > distribution, these options correspond to 'apachectl restart' and > 'apachectl graceful', respectively (although, if I remember right, the > 'graceful' option wasn't added until around release 1.3.0). > > So, something like this is what you want to do: > > root# cd /usr/local/apache > root# mv logs/access_log logs/access_log.21-feb-2001 > root# mv logs/error_log logs/error_log.21-feb-2001 > root# ./apachectl graceful > > At this point, new logs will be opened in the logs directory, and you can > safely do whatever (gzip, archive, analyze, etc...) you want with the > rotated logs. > > HTH, > > > On Thu, 22 Feb 2001, Terry Newnham wrote: > > > I've found out how to edit httpd.conf so that it will rotate the error > > and access logs. But you have to restart apache to read that which I'd > > rather not do. Is there a command-line use or the rotatelogs by means of > > which you can rotate the logs on the fly ? > > =-=-=-=-=-=-=-=-=-=- My God! What have I done? -=-=-=-=-=-=-=-=-=-= > Steve Reppucci [EMAIL PROTECTED] | > Logical Choice Software http://logsoft.com/ | > >
[OT] Re: Rotating Apache logs
This is definitely off topic for this list, however... I'm not exactly sure what you're asking here, but if what you're asking is "how do I rotate logfiles without doing a hard stop/start cycle?", then the answer is (from the command line...) rename the open logfiles, then send the server either a SIGHUP or a SIGUSR1, which will cause it to reopen its logfiles. SIGHUP does it "forcefully" (existing requests will aborted), while SIGUSR1 does it "gracefully", allowing each child server currently handling requests to complete the request before restarting it. If you use the 'apachectl' control script included in the apache distribution, these options correspond to 'apachectl restart' and 'apachectl graceful', respectively (although, if I remember right, the 'graceful' option wasn't added until around release 1.3.0). So, something like this is what you want to do: root# cd /usr/local/apache root# mv logs/access_log logs/access_log.21-feb-2001 root# mv logs/error_log logs/error_log.21-feb-2001 root# ./apachectl graceful At this point, new logs will be opened in the logs directory, and you can safely do whatever (gzip, archive, analyze, etc...) you want with the rotated logs. HTH, On Thu, 22 Feb 2001, Terry Newnham wrote: > I've found out how to edit httpd.conf so that it will rotate the error > and access logs. But you have to restart apache to read that which I'd > rather not do. Is there a command-line use or the rotatelogs by means of > which you can rotate the logs on the fly ? =-=-=-=-=-=-=-=-=-=- My God! What have I done? -=-=-=-=-=-=-=-=-=-= Steve Reppucci [EMAIL PROTECTED] | Logical Choice Software http://logsoft.com/ |
Re: Rotating Apache logs
Terry Newnham wrote: > I've found out how to edit httpd.conf so that it will rotate the error > and access logs. But you have to restart apache to read that which I'd > rather not do. Is there a command-line use or the rotatelogs by means of > which you can rotate the logs on the fly ? On log rotation see http://www.modperl.com/perl_conference/
Re: Process Running Even after timeout
"Kiran Kumar.M" <[EMAIL PROTECTED]> writes: > I have a program that fetches data from mysql database,since the = > database is huge the user gets a time-out(this has been taken care now = > :-)) , but when i see the process list the mysqld process for that = > request is still running , Dosent apache close the database connection = > after it sends a timeout ??? Yes, but mysql is busy doing your query. -- Dave Hodgkinson, http://www.hodgkinson.org Editor-in-chief, The Highway Star http://www.deep-purple.com Apache, mod_perl, MySQL, Sybase hired gun for, well, hire -
Process Running Even after timeout
Hi, I have a program that fetches data from mysql database,since the database is huge the user gets a time-out(this has been taken care now :-)) , but when i see the process list the mysqld process for that request is still running , Dosent apache close the database connection after it sends a timeout ??? Kiran
[ANNOUNCE] Apache-Clean 0.01
The URL http://morpheus.laserlink.net/~gyoung/modules/Apache-Clean-0.01.tar.gz has entered CPAN as file: $CPAN/authors/id/G/GE/GEOFF/Apache-Clean-0.01.tar.gz size: 3509 bytes md5: ff98b3f35d63852d1727b71bd27788e6 Nothing fancy here, just useful... README: NAME Apache::Clean - mod_perl interface into HTML::Clean SYNOPSIS httpd.conf: SetHandler perl-script PerlHandler Apache::Clean PerlSetVar CleanLevel 3 Apache::Clean is Filter aware, meaning that it can be used within Apache::Filter framework without modification. Just include the directives PerlModule Apache::Filter PerlSetVar Filter On and modify the PerlHandler directive accordingly... DESCRIPTION Apache::Clean uses HTML::Clean to tidy up large, messy HTML, saving bandwidth. It is particularly useful with Apache::Compress for ultimate savings. The only current configuration directive is CleanLevel, which defaults to 3. Apache::Clean will only tidy up whitespace (via $h->strip) and will not perform other options of HTML::Clean (such as browser compatibility). See the HTML::Clean manpage for details. Only documents with a content type of "text/html" are affected - all others are passed through unaltered. NOTES Verbose debugging is enabled by setting $Apache::Clean::DEBUG=1 or greater. To turn off all debug information, set your apache LogLevel directive above info level. This is alpha software, and as such has not been tested on multiple platforms or environments. It requires PERL_LOG_API=1, PERL_FILE_API=1, and maybe other hooks to function properly. FEATURES/BUGS No unknown bugs or features at this time... SEE ALSO perl(1), mod_perl(3), Apache(3), Apache::Filter(3), Apache::Compress(3), HTML::Clean(3) AUTHOR Geoffrey Young <[EMAIL PROTECTED]> COPYRIGHT Copyright (c) 2001, Geoffrey Young. All rights reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
RE: Odd Caching Bug
> So, if I understand correctly, the database handle is getting cached > more than you think it should, that's right? I was unsure where the caching was occurring. > I think MaxRequestsPerChild doesn't actually cut off a connection that > is kept alive (with KeepAlive). Ctrl-N in a browser could validly reuse > the same connection if it is still around (if you wait too long, a > keep-alive connection will be closed). This would make sense. It would seem that 'KeepAlive' keeps the 'request' open until it times out. > So even though you've set up MaxRequestsPerChild to 1, each Apache child > process could be serving multiple requests over a single TCP/IP > connection. The answer to "where the caching is occuring" would be in > Apache::DBI, which opens a single DB connection per Apache child > process. > > - stop using Apache::DBI. > > - have your scripts explicitly set the date format they want every time > (do not rely on "whatever format is already there"). Actually these are both not options : ) We really are not allowing developers to modify global database variables. This is the first no-no. Because it is not a strict policy somebody obviously abused it : ) > With both solutions, you'll be able to leave the keep-alive enabled and > use a saner MaxRequestsPerChild (like the default setting). Having > "MaxRequestsPerChild 1" is harsh on resources! Understandably the configuration is not optimized but it is only in a development environment to allow for simultaneous development of modules, components and visual elements. Our production environment varies significantly in it's configuration directives. Thanks for the information though. It clarified what I was originally thinking. Thanks,
Re: Rotating Apache logs
this is off-topic, coz logrotate should do it. man logrotate. rgds, Edwin Terry Newnham wrote: > > Hi > > I've found out how to edit httpd.conf so that it will rotate the error > and access logs. But you have to restart apache to read that which I'd > rather not do. Is there a command-line use or the rotatelogs by means of > which you can rotate the logs on the fly ? > > Terry
Re: Rotating Apache logs
Hi all, On Thu, 22 Feb 2001, Terry Newnham wrote: > Is there a command-line use or the rotatelogs by means of > which you can rotate the logs on the fly ? Your logs can be piped through a program so you can do anything you like with them, on the fly. For example (from http://perl.apache.org/guide): LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog "| /usr/local/apache/bin/syslogger.pl hostnameX" common Note that this particular approach is said to be slow, but there are other ways of doing it. 73, Ged.
Re: [gsar@ActiveState.com: v5.6.1 trial2 is available]
On Fri, Feb 16, 2001 at 05:44:34PM +0100, [EMAIL PROTECTED] wrote: > On Fri, 16 Feb 2001 [EMAIL PROTECTED] wrote: > > > Hi Jarkko, > > > > > > I'll try to do one or two more builds. I'd really like to try it with > > > > Apache's mod_perl and mod_embed, these really didn't work at all with > > > > perl-5.6.0, but I'm not sure I'll find the time. > > [AIX-4.3.2, IBM's C compiler, Apache apxs shared modules] > > I tried to get mod_perl-1.25 (an Apache/perl module that's > supposed to let you use perl to implement script-based apache modules) > working with perl-5.6.1-trial2, and failed. I can get mod_perl > working with perl-5.5.3, but I never succeeded with perl-5.6.0. > > With perl-5.6.1-trial2, the mod-perl initialisation is successful, but I > get a segmentation fault as soon as I try to access the perl script > (test.pl or test.perl). A short while ago the Apache distribution did change over to the native dlopen library if the AIX version 4.3 and above. For previous versions the dlopen emulation layer is still used. Perl does always use the emulation, which produces a conflict if Apache uses the native one in the modperl case. I attach a patch below that changes the perl distribution to also use the native AIX dlopen on AIX 4.3 and above as in the Apache case. For getting some more involved modperl modules like Embperl to work we probably need to change the modperl.exp file to include the magic "#! ." instead of simply "#!" at the beginning, this signals the native dlopen to import symbols from the main program. The patch already does that in makedef.pl for the perl.exp file, but only on AIX 4.3 and above because the older AIX linkers do strange things if this option is used. -- Jens-Uwe Mager HELIOS Software GmbH Steinriede 3 30827 Garbsen Germany Phone: +49 5131 709320 FAX:+49 5131 709325 Internet: [EMAIL PROTECTED] --- perl-5.6.1-TRIAL2/ext/DynaLoader/dl_aix.xs.orig Wed Feb 21 19:45:18 2001 +++ perl-5.6.1-TRIAL2/ext/DynaLoader/dl_aix.xs Wed Feb 21 21:16:53 2001 @@ -14,6 +14,21 @@ #define PERLIO_NOT_STDIO 0 /* + * On AIX 4.3 and above the emulation layer is not needed any more, and + * indeed if perl uses its emulation and perl is linked into apache + * which is supposed to use the native dlopen conflicts arise. + * Jens-Uwe Mager [EMAIL PROTECTED] + */ +#ifdef USE_NATIVE_DLOPEN + +#include "EXTERN.h" +#include "perl.h" +#include "XSUB.h" +#include + +#else + +/* * @(#)dlfcn.c 1.5 revision of 93/02/14 20:14:17 * This is an unpublished work copyright (c) 1992 Helios Software GmbH * 3000 Hannover 1, Germany @@ -89,6 +104,13 @@ # define FREAD(p,s,n,ldptr)fread(p,s,n,IOPTR(ldptr)) #endif +#ifndef RTLD_LAZY +# define RTLD_LAZY 0 +#endif +#ifndef RTLD_GLOBAL +# define RTLD_GLOBAL 0 +#endif + /* * We simulate dlopen() et al. through a call to load. Because AIX has * no call to find an exported symbol we read the loader section of the @@ -627,6 +649,7 @@ safefree(buf); return ret; } +#endif /* USE_NATIVE_DLOPEN */ /* dl_dlopen.xs * @@ -672,7 +695,7 @@ DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags)); if (flags & 0x01) Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename); - RETVAL = dlopen(filename, 1) ; + RETVAL = dlopen(filename, RTLD_GLOBAL|RTLD_LAZY) ; DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL)); ST(0) = sv_newmortal() ; if (RETVAL == NULL) --- perl-5.6.1-TRIAL2/hints/aix.sh.orig Wed Feb 21 19:39:30 2001 +++ perl-5.6.1-TRIAL2/hints/aix.sh Wed Feb 21 19:45:00 2001 @@ -55,9 +55,11 @@ case "$osvers" in 3.*|4.1.*|4.2.*) usenm='undef' + usenativedlopen='false' ;; *) usenm='true' + usenativedlopen='true' ;; esac @@ -405,20 +407,25 @@ esac EOCBU -# If the C++ libraries, libC and libC_r, are available we will prefer them -# over the vanilla libc, because the libC contain loadAndInit() and -# terminateAndUnload() which work correctly with C++ statics while libc -# load() and unload() do not. See ext/DynaLoader/dl_aix.xs. -# The C-to-C_r switch is done by usethreads.cbu, if needed. -if test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then -# Cify libswanted. -set `echo X "$libswanted "| sed -e 's/ c / C c /'` -shift -libswanted="$*" -# Cify lddlflags. -set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'` -shift -lddlflags="$*" +if test $usenativedlopen = 'true' +then +ccflags="$ccflags -DUSE_NATIVE_DLOPEN" +else +# If the C++ libraries, libC and libC_r, are available we will prefer them +# over the vanilla libc, because the libC contain loadAndInit() and +# terminateAndUnload() which work correctly with C++ statics while libc +# load() and unload() do not. See ext/DynaLoader/dl_aix.xs. +# The C-to-C_r switch is done by usethreads.cbu, i
success with Apache::Compress
Hi, after looking at mod_gzip, Apache::Gzip, Apache::GzipChain and so on, I decided to try Apache::Compress, with some doubt that it was "worth it" There were a few hiccups, but it worked out great. To test "in production" I created an alias /x to my cgi location, and then added Aloas /y /path/to/my/modperl/programs/ Aloas /x /path/to/my/modperl/programs/ PerlModule Apache::Filter PerlModule Apache::RegistryNG PerlModule Apache::RegistryBB # original gateway .. SetHandler perl-script PerlHandler Apache::RegistryBB->handler .. # optional compressing gateway .. SetHandler perl-script PerlSetVar Filter on PerlHandler Apache::RegistryFilter Apache::Compress .. I also changed Apache::RegistryFilter to subclass from Apache::RegistryBB (bare bones), as that is my preferred harness.. (if you mix Registry classes, mod_perl will not recognize the same script as the same script and recompile it again, wasting memory). Ok so I found one problem .. If a client is 1.1 but does not accept gzip, then I'd get an internal server error and a perl complaint about an invalid file handle GE. I fixed this by changing the fallback (non compressing filter) code in Apache::Compress to print, rather than use send_fd() .. I don't know why this worked, but it does.. Next problem .. the zoo of browsers out there that lie about being able to handle gzip.. I don't want to assume they all work, then have users look at pages of gibberish, so I used mod_rewrite to conditionally use the compressing gateway initially ONLY for two browser regexps: (but they are by far the most popular): RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[45].*Windows.* [OR] RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[45].*Opera.* RewriteRule ^(.*) http://back.end.server.ip/x/mysite$1 [P] One could also, I guess, offer a new subdomain using mod_rewrite.. www.mysite.com (directed to non compressing URL) fast.mysite.com (directed to compressing URL) Next problem .. I had an unfortunate habit of printing Location: blah\n\n from my mod_perl programs which breaks under the compressing filter chain so rather than fix this now, I used mod_rewrite RewriteRule again to strip out my URLs that have this kind of redirect, to point to the /y (non compressing) handler regardless. Result: this is the good part :-) * Since all my content is dynamic and most is HTML with fiddly stuff, nett site outgoing bandwidth (and bill) has dropped by 2/3rds !! * the modperl machine is now working harder.. where previously it was delivering approx 300k/sec and was 20% cpu busy, it is now delivering the same page count but 142kb/sec of compressed data but is 40% cpu busy .. since it is SMP I'm guessing it takes 40% of one PIII 1ghz to handle the load of about 140k/sec of compressed html.. * page sizes are MUCH smaller, in many/most cases... home page --> 50k --> 12k one 50 post forum thread --> 120k --> 22k large html table with finnicky cell colors etc --> 87k --> 8k * load times from the users perspective, even on a DSL line, feel twice as fast. On a modem, for some examples above, it would feel 5x faster! my subjective feel under MSIE on just a 300mhz laptop, but connected to a 784kbps DSL line, was that pages appear twice as fast.. * my bandwidth bill drops by 2/3rd (would be much more but html was not 100% of bandwidth, plus I'm conservative about switching it on for more browsers).. AWESOME.. -Justin