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>

Reply via email to