in reply to Apache2 to perl slow start

Do some body can tell me did I can avoid that delay ?

First you need to find out where the delay is. How long does it take your apache to serve each of the following:

  1. An item of static content such as a small plain text file
  2. A bash CGI script which does nothing
  3. A perl CGI script which does nothing
  4. Your perl CGI script which does something

If it's only item 4 which takes a long time, then the problem is with your script and you will need to debug it.

Replies are listed 'Best First'.
Re^2: Apache2 to perl slow start
by Acnapyx (Initiate) on Nov 13, 2019 at 08:34 UTC

    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
      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.