To throw mod_apreq2 into the benchmarking mix, add items to the query string you are hitting (on enquiry.pl). In particular, lang=.{en,es,de,fr} will generate UTF-8 European-language localized output.
On Wed, Aug 31, 2022 at 7:13 PM Joe Schaefer <j...@sunstarsys.com> wrote: > I went ahead and copied my company templates over to the github cms repo, > so you can run enquiry.pl yourself > (once you edit the @TEMPLATE_DIRS path to point at your checkout). You > will see sealed.pm at work in the > httpd error logs. > > On Wed, Aug 31, 2022 at 1:02 PM Joe Schaefer <j...@sunstarsys.com> wrote: > >> For my part in this story, v4.0.0 is the end of the line. This release >> solves every business problem my own company >> had with prior releases, so I'm satisfied with where it lies. >> >> But it is not perfect by any stretch. To take it to the level where it >> needs to be someday, B::Generate's maintainers need to be reliable >> partners with the future maintainers of sealed.pm, to deal with whatever >> long-range support issues crop up as perlguts invariably >> undergoes changes that break the undocumented assumptions I've made in >> getting this into workable condition. >> >> What do you think about the idea of putting sealed.pm into the modperl >> project, vs. a stand-alone on CPAN? >> >> On Wed, Aug 31, 2022 at 10:53 AM Joe Schaefer <j...@sunstarsys.com> wrote: >> >>> In the end, the surgery we do (to method_named), is to replace the prior >>> $op's next() pointer to point at the $gv op we copied from >>> a known subroutine's op-tree (that uses a typical subroutine call >>> instead of a method lookup). Since we relocated that next() pointer, >>> we need to decrement the internal refcnt for the method_named op to >>> avoid leaks/segfaults during garbage collection of the ithread. >>> >>> None of the many issues Doug faced back in 2000 to do this on a more >>> generic level actually need to be done for this implementation. >>> You just need to know that any code that tries to walk this tree (eg >>> B::Deparse) post-tweaks may choke on the zombie method_named >>> op lying around in one of the sibling() linked lists. That probably >>> includes the ithread-cloniing mechanism itself, so only use :sealed >>> post ithread construction, not prior to it. >>> >>> On Wed, Aug 31, 2022 at 10:27 AM Joe Schaefer <j...@sunstarsys.com> >>> wrote: >>> >>>> The :sealed attribute is a statement about a class's @ISA: you are >>>> saying you are using its compile-time setting. >>>> And because we invoke $class->can to do the lookup, module authors who >>>> override UNIVERSAL::can() with a customized >>>> one can support AUTOLOADed methods themselves. >>>> >>>> Under :sealed, you control which lexical object references you want to >>>> use compile-time method lookups (via can()), >>>> by declaring them with a class (type), or avoiding doing that in the >>>> lexical's declaration. It only impacts your subroutine >>>> definitions that declare :sealed and a typed lexicals, not any other >>>> module's code elsewhere. >>>> >>>> You absolutely *can* use sealed.pm outside mod_perl, but you need to >>>> be wary about using typed lexicals on your method >>>> argument stack, because end-users may pass properly derived objects to >>>> your method, and will expect your module to use >>>> the derived-class's overrides of any method calls in your codebase. >>>> Basically the law of the land is that consumers of an API >>>> expect all method calls to operate the way *virtual* method calls work >>>> in Java/C++. However, what you do internally with API's >>>> outside of your published API's argument stack is fair game for >>>> :sealed. My advice that it's only practical to seal XS method calls >>>> remains. >>>> >>>> On Wed, Aug 31, 2022 at 9:52 AM Joe Schaefer <j...@sunstarsys.com> >>>> wrote: >>>> >>>>> Submitted a Pull Request for the Generate.xs patch: >>>>> https://github.com/rurban/b-generate/pull/2 >>>>> Added more comments to sealed.pm to explain the rationale behind the >>>>> # replace $methop logic, >>>>> since it differs from what Doug did back in 2000. >>>>> >>>>> On Tue, Aug 30, 2022 at 2:52 PM Joe Schaefer <j...@sunstarsys.com> >>>>> wrote: >>>>> >>>>>> Take a walk down history lane with me here: >>>>>> https://www.perl.com/pub/2000/06/dougpatch.html/ >>>>>> >>>>>> Like ithreads, the idea was sparked from Gurusamy's genius, coded up >>>>>> by Doug, and largely forgotten by p5p politics. >>>>>> It's not that it couldn't be done, they arrived at the place where it >>>>>> *shouldn't* be done, which was deflating for mod_perl fans. >>>>>> Simon Couzens made a lot of inroads since, with modularized Perl >>>>>> compilers and B::Generate, but it wasn't until >>>>>> Perl7 that I was motivated to try any way forward, on a more limited, >>>>>> controllable scale. >>>>>> >>>>>> What do you think? How should this piece of the mod_perl puzzle fit >>>>>> in to the CPAN universe? >>>>>> >>>>>> On Tue, Aug 30, 2022 at 2:12 PM Joe Schaefer <j...@sunstarsys.com> >>>>>> wrote: >>>>>> >>>>>>> Every method call that's implemented in XS is looked-up at >>>>>>> compile-time in that script, even for class methods. >>>>>>> That's the sweet spot for :sealed. The only other things I do with >>>>>>> it are a few hot methods in Dotiac::DTL::Core, but that's probably not >>>>>>> worth the bother. >>>>>>> >>>>>>> On Tue, Aug 30, 2022 at 1:14 PM Joe Schaefer <j...@sunstarsys.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Just look through my commit history on this sample Registry script >>>>>>>> to see what's involved in getting sealed activated on your scripts. >>>>>>>> >>>>>>>> https://github.com/SunStarSys/cms/blob/master/enquiry.pl >>>>>>>> >>>>>>>> On Tue, Aug 30, 2022 at 1:12 PM Joe Schaefer <j...@sunstarsys.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> It'd be pretty harmless to apply the RegistryCooker.pm patch once >>>>>>>>> we find a home for sealed.pm (either in this project or as a >>>>>>>>> stand-alone pragma on CPAN). >>>>>>>>> Nothing will segfault without consciously using types on your >>>>>>>>> lexical object reference declarations; otherwise it's a giant noop. >>>>>>>>> >>>>>>>>> On Tue, Aug 30, 2022 at 12:53 PM Joe Schaefer <j...@sunstarsys.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> If you really beat the hell out of it thread-wise, sealed.pm >>>>>>>>>> v4.0.0 will still segfault, but there's not much more I can do with >>>>>>>>>> the >>>>>>>>>> code at this point to prevent that. >>>>>>>>>> B::Generate doesn't really support what I'm doing here, which is >>>>>>>>>> to do surgery on an existing op-tree, instead of just playing around >>>>>>>>>> with a >>>>>>>>>> user-generated one. >>>>>>>>>> There's no good way to remove the target "method_named" op that >>>>>>>>>> we're replacing with a gv_op. If that can't be supported using >>>>>>>>>> B::OP APIs, >>>>>>>>>> then it should >>>>>>>>>> be handled from perl itself. The problem is that the politics >>>>>>>>>> around the feature were never resolved, because nobody wants to >>>>>>>>>> change the >>>>>>>>>> default "virtual method" >>>>>>>>>> behavior of Perl's OO-runtime-lookups. Now with the new :sealed >>>>>>>>>> SUBROUTINE ATTRIBUTE, it's only enabled for people (like us) who >>>>>>>>>> want it >>>>>>>>>> conditionally applied, >>>>>>>>>> just like we do for the :method attribute. >>>>>>>>>> >>>>>>>>>> On Tue, Aug 30, 2022 at 11:26 AM Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Someday this patch might be interesting: >>>>>>>>>>> >>>>>>>>>>> diff -u RegistryCooker.pm~ RegistryCooker.pm >>>>>>>>>>> --- RegistryCooker.pm~ 2022-08-30 11:10:19.790171019 -0400 >>>>>>>>>>> +++ RegistryCooker.pm 2022-08-30 11:12:34.319572045 -0400 >>>>>>>>>>> @@ -399,7 +399,8 @@ >>>>>>>>>>> my $eval = join '', >>>>>>>>>>> 'package ', >>>>>>>>>>> $self->{PACKAGE}, ";", >>>>>>>>>>> - "sub handler {", >>>>>>>>>>> + "use base 'sealed';", >>>>>>>>>>> + "sub handler :Sealed {", >>>>>>>>>>> "local \$0 = '$script_name';", >>>>>>>>>>> $nph, >>>>>>>>>>> $shebang, >>>>>>>>>>> >>>>>>>>>>> On Mon, Aug 29, 2022 at 2:21 PM Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Forgive me for the pent up frustration of having our wonderful >>>>>>>>>>>> mod_perl project being completely ignored and abandoned by the Perl >>>>>>>>>>>> Steering Committee's frivolous lingustic interests over the years >>>>>>>>>>>> since the >>>>>>>>>>>> Parrot announcement. >>>>>>>>>>>> SaywerX gave us a reason to be hopeful again. Let's see what >>>>>>>>>>>> they do with it. >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Aug 29, 2022 at 1:34 PM Joe Schaefer < >>>>>>>>>>>> j...@sunstarsys.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> If the Perl steering committee had any brains left it would >>>>>>>>>>>>> have capitalized on the perl 5.34 release and Co announced >>>>>>>>>>>>> modperl2 ithread >>>>>>>>>>>>> compatibility now available with Perl7’s new release. >>>>>>>>>>>>> >>>>>>>>>>>>> Instead they are going to kick the tires on the defaults for >>>>>>>>>>>>> strictures and warnings until nobody cares any more. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 1:17:17 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> The only reason I’ve been vacillating about glibc/malloc >>>>>>>>>>>>> thread safety is because I couldn’t fathom the fact that people >>>>>>>>>>>>> still >>>>>>>>>>>>> believed modperl isn’t compatible with mpm_event at this point in >>>>>>>>>>>>> the Perl7 >>>>>>>>>>>>> storyline. The old segfaults of the past that happened in glibc >>>>>>>>>>>>> malloc >>>>>>>>>>>>> were because Perl was corrupting the heap in some other part of >>>>>>>>>>>>> the >>>>>>>>>>>>> codebase, and there’s no simple way to track it down without a >>>>>>>>>>>>> tool like >>>>>>>>>>>>> Valgrind, but we weren’t successful with that effort either. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 1:08:00 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> Religiously avoid setting up per request ithread environment >>>>>>>>>>>>> variables. Just use PerlSetEnv in your Webserver config. >>>>>>>>>>>>> Everything we did >>>>>>>>>>>>> in modperl to support CGI scripts is a train wreck. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 1:04:03 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> Look into reducing the scope of your interpreters down from >>>>>>>>>>>>> the request level to the handler level. If all you are doing is >>>>>>>>>>>>> running >>>>>>>>>>>>> registry scripts, you will get even better scaling out of just a >>>>>>>>>>>>> few >>>>>>>>>>>>> ithreads per worker process. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 12:57:14 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> The only impact to your work with modperl is that you will >>>>>>>>>>>>> need to assess the ithread-safety of your dependent XS-based >>>>>>>>>>>>> modules. For >>>>>>>>>>>>> example, use a JSON::XS thread safe alternative- there are >>>>>>>>>>>>> several. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 12:49:22 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> There is a mountain of awful advice floating around about >>>>>>>>>>>>> ithreads, including pretty much everything going on in Raku >>>>>>>>>>>>> around adopting >>>>>>>>>>>>> the node.js model instead. It is safe to ignore all that now that >>>>>>>>>>>>> SawyerX >>>>>>>>>>>>> spit polished all of the perl5 internals. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Monday, August 29, 2022 12:40:43 PM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> Many of the performance hacks we’ve encouraged over the years, >>>>>>>>>>>>> eg around HTTPD’s lingering close effect, are obsoleted with >>>>>>>>>>>>> ithreads. >>>>>>>>>>>>> Unless you send flush buckets down the output filter stack >>>>>>>>>>>>> yourself, the >>>>>>>>>>>>> “response handler” phase exits long before the “connection >>>>>>>>>>>>> handler” starts >>>>>>>>>>>>> making non blocking socket system calls. So you need an order of >>>>>>>>>>>>> magnitude >>>>>>>>>>>>> fewer ithreads than you do prefork children in a multitier arch. >>>>>>>>>>>>> >>>>>>>>>>>>> Get Outlook for iOS <https://aka.ms/o0ukef> >>>>>>>>>>>>> ------------------------------ >>>>>>>>>>>>> *From:* Joe Schaefer <j...@sunstarsys.com> >>>>>>>>>>>>> *Sent:* Sunday, August 28, 2022 11:09:14 AM >>>>>>>>>>>>> *To:* mod_perl list <modperl@perl.apache.org> >>>>>>>>>>>>> *Subject:* Re: sealed.pm v4.0.0 is out >>>>>>>>>>>>> >>>>>>>>>>>>> Benchmark ran on my 2021 Dell Precision Laptop w/ 8 cores + >>>>>>>>>>>>> HT (so 16vCPU) and Ubuntu 22.04 inside WSL2. Never topped 50% >>>>>>>>>>>>> avg CPU, and >>>>>>>>>>>>> almost all of the CPU was in userland (not system calls). >>>>>>>>>>>>> >>>>>>>>>>>>> On Sat, Aug 27, 2022 at 11:42 AM <j...@sunstarsys.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> See https://sunstarsys.com/essays/perl7-sealed-lexicals. For >>>>>>>>>>>>> the full effect, you will need to build B::Generate with this >>>>>>>>>>>>> patched >>>>>>>>>>>>> version instead: >>>>>>>>>>>>> https://github.com/SunStarSys/cms/blob/master/Generate.xs >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Sample mod_perl config + benchmarks: >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <IfModule mpm_event_module> >>>>>>>>>>>>> >>>>>>>>>>>>> StartServers 2 >>>>>>>>>>>>> >>>>>>>>>>>>> MinSpareThreads 100 >>>>>>>>>>>>> >>>>>>>>>>>>> MaxSpareThreads 500 >>>>>>>>>>>>> >>>>>>>>>>>>> ThreadLimit 1000 >>>>>>>>>>>>> >>>>>>>>>>>>> ThreadsPerChild 100 >>>>>>>>>>>>> >>>>>>>>>>>>> MaxRequestWorkers 1000000 >>>>>>>>>>>>> >>>>>>>>>>>>> MaxConnectionsPerChild 0 >>>>>>>>>>>>> >>>>>>>>>>>>> </IfModule> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <IfModule mod_perl.c> >>>>>>>>>>>>> >>>>>>>>>>>>> PerlSwitches -T -I/home/joesuf4/src/cms/lib >>>>>>>>>>>>> >>>>>>>>>>>>> PerlInterpStart 2 >>>>>>>>>>>>> >>>>>>>>>>>>> PerlInterpMax 4 >>>>>>>>>>>>> >>>>>>>>>>>>> PerlInterpMinSpare 1 >>>>>>>>>>>>> >>>>>>>>>>>>> PerlInterpMaxSpare 4 >>>>>>>>>>>>> >>>>>>>>>>>>> PerlInterpMaxRequests 1000000 >>>>>>>>>>>>> >>>>>>>>>>>>> PerlOptions +GlobalRequest >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <Directory /home/joesuf4/src/cms> >>>>>>>>>>>>> >>>>>>>>>>>>> Require all granted >>>>>>>>>>>>> >>>>>>>>>>>>> AddHandler perl-script .pl >>>>>>>>>>>>> >>>>>>>>>>>>> PerlResponseHandler ModPerl::Registry >>>>>>>>>>>>> >>>>>>>>>>>>> Options +ExecCGI >>>>>>>>>>>>> >>>>>>>>>>>>> </Directory> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <Directory /home/joesuf4/src/trunk/content> >>>>>>>>>>>>> >>>>>>>>>>>>> Require all granted >>>>>>>>>>>>> >>>>>>>>>>>>> </Directory> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> <VirtualHost *:80> >>>>>>>>>>>>> >>>>>>>>>>>>> ServerName localhost >>>>>>>>>>>>> >>>>>>>>>>>>> DocumentRoot /home/joesuf4/src/trunk/content >>>>>>>>>>>>> >>>>>>>>>>>>> Alias /perl-script /home/joesuf4/src/cms >>>>>>>>>>>>> >>>>>>>>>>>>> </VirtualHost> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> </IfModule> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> ab -n 10000 -c 1000 http://localhost/perl-script/enquiry.pl >>>>>>>>>>>>> >>>>>>>>>>>>> This is ApacheBench, Version 2.3 <$Revision: 1879490 $> >>>>>>>>>>>>> >>>>>>>>>>>>> Copyright 1996 Adam Twiss, Zeus Technology Ltd, >>>>>>>>>>>>> http://www.zeustech.net/ >>>>>>>>>>>>> >>>>>>>>>>>>> Licensed to The Apache Software Foundation, >>>>>>>>>>>>> http://www.apache.org/ >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Benchmarking localhost (be patient) >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 1000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 2000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 3000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 4000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 5000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 6000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 7000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 8000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 9000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Completed 10000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> Finished 10000 requests >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Server Software: Apache/2.4.52 >>>>>>>>>>>>> >>>>>>>>>>>>> Server Hostname: localhost >>>>>>>>>>>>> >>>>>>>>>>>>> Server Port: 80 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Document Path: /perl-script/enquiry.pl >>>>>>>>>>>>> >>>>>>>>>>>>> Document Length: 1329 bytes >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Concurrency Level: 1000 >>>>>>>>>>>>> >>>>>>>>>>>>> Time taken for tests: 1.218 seconds >>>>>>>>>>>>> >>>>>>>>>>>>> Complete requests: 10000 >>>>>>>>>>>>> >>>>>>>>>>>>> Failed requests: 0 >>>>>>>>>>>>> >>>>>>>>>>>>> Total transferred: 15010000 bytes >>>>>>>>>>>>> >>>>>>>>>>>>> HTML transferred: 13290000 bytes >>>>>>>>>>>>> >>>>>>>>>>>>> Requests per second: 8207.94 [#/sec] (mean) >>>>>>>>>>>>> >>>>>>>>>>>>> Time per request: 121.833 [ms] (mean) >>>>>>>>>>>>> >>>>>>>>>>>>> Time per request: 0.122 [ms] (mean, across all >>>>>>>>>>>>> concurrent requests) >>>>>>>>>>>>> >>>>>>>>>>>>> Transfer rate: 12031.37 [Kbytes/sec] received >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Connection Times (ms) >>>>>>>>>>>>> >>>>>>>>>>>>> min mean[+/-sd] median max >>>>>>>>>>>>> >>>>>>>>>>>>> Connect: 0 2 6.2 0 24 >>>>>>>>>>>>> >>>>>>>>>>>>> Processing: 4 93 49.6 82 458 >>>>>>>>>>>>> >>>>>>>>>>>>> Waiting: 1 80 44.5 71 455 >>>>>>>>>>>>> >>>>>>>>>>>>> Total: 17 95 49.5 84 458 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Percentage of the requests served within a certain time (ms) >>>>>>>>>>>>> >>>>>>>>>>>>> 50% 84 >>>>>>>>>>>>> >>>>>>>>>>>>> 66% 100 >>>>>>>>>>>>> >>>>>>>>>>>>> 75% 112 >>>>>>>>>>>>> >>>>>>>>>>>>> 80% 120 >>>>>>>>>>>>> >>>>>>>>>>>>> 90% 147 >>>>>>>>>>>>> >>>>>>>>>>>>> 95% 173 >>>>>>>>>>>>> >>>>>>>>>>>>> 98% 233 >>>>>>>>>>>>> >>>>>>>>>>>>> 99% 318 >>>>>>>>>>>>> >>>>>>>>>>>>> 100% 458 (longest request) >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> % pgrep -f apache2 | xargs -n1 ps -uwww >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> root 442827 0.0 0.1 18180 14244 ? Ss 11:27 >>>>>>>>>>>>> 0:00 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> www-data 446387 1.7 1.5 7549352 129692 ? Sl 11:28 >>>>>>>>>>>>> 0:12 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> www-data 451006 15.2 1.5 7483708 128468 ? Sl 11:39 >>>>>>>>>>>>> 0:10 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> www-data 451317 11.7 1.4 7483772 119836 ? Sl 11:39 >>>>>>>>>>>>> 0:07 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> www-data 451629 6.4 1.3 7483804 113012 ? Sl 11:39 >>>>>>>>>>>>> 0:03 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> USER PID %CPU %MEM VSZ RSS TTY STAT START >>>>>>>>>>>>> TIME COMMAND >>>>>>>>>>>>> >>>>>>>>>>>>> www-data 451929 1.1 1.4 7483816 116668 ? Sl 11:39 >>>>>>>>>>>>> 0:00 /usr/sbin/apache2 -k start >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Joe Schaefer, Ph.D. >>>>>>>>>>>>> We only build what you need built. >>>>>>>>>>>>> <j...@sunstarsys.com> >>>>>>>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Joe Schaefer, Ph.D. >>>>>>>>>>>> We only build what you need built. >>>>>>>>>>>> <j...@sunstarsys.com> >>>>>>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Joe Schaefer, Ph.D. >>>>>>>>>>> We only build what you need built. >>>>>>>>>>> <j...@sunstarsys.com> >>>>>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Joe Schaefer, Ph.D. >>>>>>>>>> We only build what you need built. >>>>>>>>>> <j...@sunstarsys.com> >>>>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Joe Schaefer, Ph.D. >>>>>>>>> We only build what you need built. >>>>>>>>> <j...@sunstarsys.com> >>>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Joe Schaefer, Ph.D. >>>>>>>> We only build what you need built. >>>>>>>> <j...@sunstarsys.com> >>>>>>>> 954.253.3732 <//954.253.3732> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Joe Schaefer, Ph.D. >>>>>>> We only build what you need built. >>>>>>> <j...@sunstarsys.com> >>>>>>> 954.253.3732 <//954.253.3732> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> Joe Schaefer, Ph.D. >>>>>> We only build what you need built. >>>>>> <j...@sunstarsys.com> >>>>>> 954.253.3732 <//954.253.3732> >>>>>> >>>>>> >>>>>> >>>>> >>>>> -- >>>>> Joe Schaefer, Ph.D. >>>>> We only build what you need built. >>>>> <j...@sunstarsys.com> >>>>> 954.253.3732 <//954.253.3732> >>>>> >>>>> >>>>> >>>> >>>> -- >>>> Joe Schaefer, Ph.D. >>>> We only build what you need built. >>>> <j...@sunstarsys.com> >>>> 954.253.3732 <//954.253.3732> >>>> >>>> >>>> >>> >>> -- >>> Joe Schaefer, Ph.D. >>> We only build what you need built. >>> <j...@sunstarsys.com> >>> 954.253.3732 <//954.253.3732> >>> >>> >>> >> >> -- >> Joe Schaefer, Ph.D. >> We only build what you need built. >> <j...@sunstarsys.com> >> 954.253.3732 <//954.253.3732> >> >> >> > > -- > Joe Schaefer, Ph.D. > We only build what you need built. > <j...@sunstarsys.com> > 954.253.3732 <//954.253.3732> > > > -- Joe Schaefer, Ph.D. We only build what you need built. <j...@sunstarsys.com> 954.253.3732 <//954.253.3732>