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
openpgp-digital-signature.asc
Description: PGP signature