Re: sealed.pm v4.0.0 is out

Joe Schaefer <[email protected]> Sat, 27 Aug 2022 09:25:50 -0700
Newsgroups gmane.comp.apache.mod-perl
Message-ID <CAFQGv+b+RG01LYfmBQ9vPxX6W=b6pN+0Kxogx8XY1W+y3k8ujA@mail.gmail.com>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

So a <600MB total RSS footprint for the entire show, and I can stably
sustain 1000 concurrent ModPerl::Registry requests, in a few milliseconds
per request.
Good luck doing anything this efficiently with a multi-tiered dynamic
content delivery regime.  The real tuning effort is to balance mpm_event
threads (100 - 1000x)
and ithreads.

- --
Joe Schaefer, Ph.D.

We only build what you need built.
<[email protected]>
954.253.3732

On 2022-08-27 at 15:42, [email protected] 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
-----BEGIN PGP SIGNATURE-----
Version: FlowCrypt Email Encryption 8.3.3
Comment: Seamlessly send and receive encrypted email

wsFzBAEBCgAGBQJjCkWOACEJEEAg7C7WAdUZFiEEf+9TuFcgikzfTrs6QCDs
LtYB1RkFAw//ceUc4RCiyAE4/NiLHh7/RFihyIEBm4LIi+JOF7y61mzWmjj2
oFguaOACfG5zsF3TftGeJXmYtP9tTE9e4NC4TJJ0ciwD9Z22lpx1+3WM6Vwg
gjnlYpm+HtElgvXB34DFj7k6ahNvbwT0NZxCa9R4Cx+x3mfe/43THDTqRHF7
H3QDqgsyEZingtBOL6uuViW82tR6f/Vl6tOf+3OQqCqsPHSr6UPzUorcB2wy
uL7YJKKqxERi6hrZEPM2scQsKvkAc7CTuuxXG7J2nWL+FM+A/+nPYMUWR10b
rJJcj0W+iHjcx0bmoIQJJdNOFkQn0hydprTdhH0caLN879OxX3pJI8jzjOxb
A5btacCuXbPwHrNMxb4bmvPrDHTQj8Sw5B6ylOIRIX/YRWcrZ9lJO9cO9/61
0W005EZFEjzCiSrvDJuQLa+uvC7CNJkP2Fzi1SuOWkj8QnV0M1Y+4WfoFH8R
ZDlHOdU5Nam8baREQZIDmkH/H/kSevbtdllZIWtlxDKUkN+H2/3LW1crMO60
sLJqDkO8J4CyDBp9crMOiRHaDx9Yxa/BnnXmwFHyqD07VwSzd43C81nUTfjN
MwgxS9SpxwK24J6V6sRVwguPUyoO7ytLb8n7RZM5VIyD9dd0wc99VtxNf8hl
eNMCrRd19h6Oj2cWxG1kTb6PinHUFgZ/DPY=
=H1je
-----END PGP SIGNATURE-----
0x4020EC2ED601D519.asc (application/pgp-keys, 4.2 KB)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: FlowCrypt Email Encryption 8.2.0
Comment: Seamlessly send and receive encrypted email

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
lRqShwVyRJwDqJbxZg==
=EqP7
-----END PGP PUBLIC KEY BLOCK-----