in reply to Re: Apache2 to perl slow start
in thread Apache2 to perl slow start

Hello again,

I run these test with simple test.cgi and apache server respond fast. I check again Devel::NYRProf trying to understand: Why when I start my script: run.pl from console start immediately the job with serial port and when I start it from apache cgi-bin have a delay around 3 sec.


2 1 1 3.10s 3.10s IO::Socket::IP::CORE:sselect (opcode)
406 1 1 2.86s 2.86s Device::SerialPort::CORE:sselect (opcode)

199 3.11s line IO/Socket/IP.pm (including 1 string eval)
16104 2.89s line Device/SerialPort.pm

Well, I know it's a hard some one to guessing what can be the problem when there are also unknowns like modules that are loaded,
but I was hopping for some hints or ideas how I can speed up a little the module.

Thanks again

Replies are listed 'Best First'.
Re^3: Apache2 to perl slow start
by hippo (Archbishop) on Nov 13, 2019 at 09:38 UTC
    I run these test with simple test.cgi and apache server respond fast.

    Good - so the problem is just with your script. Now, when you run the script from the shell and from the web server there are 3 main differences:

    • The user and group running the script
    • The environment
    • The context

    You can test out the first of these by running the script from the shell as the user and group who execute the Apache processes (eg. with sudo). For the environment your best plan is to dump it from within the script and compare these dumps from running in both ways - shell and web. Any differences there may well be relevant. Also dump %INC at the end while you are at it as you may find that there are different versions of modules being loaded which can otherwise be tricky to spot. Finally, to see if the context is affecting operations, check the audit log.

    You might also be interested to read through the Basic debugging checklist if you are not already familiar with it as there are some good practices and hints which may help.

      Hello! I fighted long time to figure out, why perl starts so slow ... enabled debug in apachhe2 and did see 2 x grant messages - then was nothing but site did not come. After a while the deflate message appeared and after this the site was ready in browser. I wondered, because calling the site with curl was perfectly quick. Now I found out: Change "HostnameLookups On" to "HostnameLookups Off" - at least it worked for me.

        You might also want to check out what kind of (dynamic) content compression algorithms are enabled in the webserver if any. It's been nearly 20 years since i used Apache (i use my own DIY webserver), so i can't give you specifics.

        Especially, you want to look if "brotli" is enabled and disable it. It has, in many cases, the best compression but is awfully slow.

        PerlMonks XP is useless? Not anymore: XPD - Do more with your PerlMonks XP
        Also check out my sisters artwork and my weekly webcomics