Loading ...
Sorry, an error occurred while loading the content.

Re: mod_perl crashing / hanging

Expand Messages
  • Tom Schindl
    ... [...] ... Yes because calling the shell is fairly slow if there are any perl-modules you could use these instead and it will certainly give you a
    Message 1 of 7 , Oct 1, 2004
    • 0 Attachment
      Alex Greg wrote:
      > Geoffrey Young wrote:
      >
      >>
      [...]

      >
      > Thanks for your response. Sorry I wasn't clear; the httpd processes
      > don't actually kill the server, they just slow Apache right down to the
      > point at which it doesn't respond to requests any more. I am still able
      > to get onto the box and kill the processes etc. without having to do a
      > hard reboot or anything. My question is what's causing Apache to get
      > into the state where it can't fork any more shells from Perl.
      >
      >>> This is because a shell call to date ($date = `date`;) is failing - this
      >>> is most likely what's causing the failure to fork we see above.
      >>
      >>
      >>
      >> if you want to avoid that shell call try POSIX::strftime() instead.
      >
      >
      >
      > We have quite a lot of calls via backticks throughout our code - and not
      > just for things like date that are trivially replaceable. Would you
      > recommend replacing these as far as possible?

      Yes because calling the shell is fairly slow if there are any
      perl-modules you could use these instead and it will certainly give you
      a performance boost.

      What calls do you make, are these custom programs? If not I'd take a
      look at CPAN maybe someone has already written a Perl-Module which does
      exactly what you need else you could maybe write it your own. I have
      done this for example librsvg because I wanted to avoid calls to the
      shell inside my httpd-processes.

      [...]

      Tom

      Reclaim Your Inbox!
      http://www.mozilla.org/products/thunderbird

      --
      Report problems: http://perl.apache.org/bugs/
      Mail list info: http://perl.apache.org/maillist/modperl.html
      List etiquette: http://perl.apache.org/maillist/email-etiquette.html
    • Alex Greg
      ... Hi, We have some calls to ps that parse the output - I suppose we could replace these with Proc::ProcessTable. The rest of it is just date, and stuff that
      Message 2 of 7 , Oct 4, 2004
      • 0 Attachment
        Tom Schindl wrote:
        > Alex Greg wrote:
        >
        >> Geoffrey Young wrote:
        >>
        >>>
        > [...]
        >
        >>
        >> Thanks for your response. Sorry I wasn't clear; the httpd processes
        >> don't actually kill the server, they just slow Apache right down to
        >> the point at which it doesn't respond to requests any more. I am still
        >> able to get onto the box and kill the processes etc. without having to
        >> do a hard reboot or anything. My question is what's causing Apache to
        >> get into the state where it can't fork any more shells from Perl.
        >>
        >>>> This is because a shell call to date ($date = `date`;) is failing -
        >>>> this
        >>>> is most likely what's causing the failure to fork we see above.
        >>>
        >>>
        >>> if you want to avoid that shell call try POSIX::strftime() instead.
        >>
        >>
        >> We have quite a lot of calls via backticks throughout our code - and
        >> not just for things like date that are trivially replaceable. Would
        >> you recommend replacing these as far as possible?
        >
        >
        > Yes because calling the shell is fairly slow if there are any
        > perl-modules you could use these instead and it will certainly give you
        > a performance boost.
        >
        > What calls do you make, are these custom programs? If not I'd take a
        > look at CPAN maybe someone has already written a Perl-Module which does
        > exactly what you need else you could maybe write it your own. I have
        > done this for example librsvg because I wanted to avoid calls to the
        > shell inside my httpd-processes.

        Hi,


        We have some calls to ps that parse the output - I suppose we could
        replace these with Proc::ProcessTable. The rest of it is just date, and
        stuff that we can replace with either system() or Perl built-ins.


        My concern though, is that this is a symptom of another problem, as has
        been suggested earlier. I have activated mod_status, but since this
        problem doesn't occur very often (and when it does, renders the server
        unable to process requests, hence I won't be able to view the status),
        I'm not sure how it will help. Looking at it now, I can see 7 servers in
        state "Waiting for connection", and 4 in state "Sending reply", which I
        assume is fairly normal.


        I will keep watching this and start work on replacing the backticks. Any
        further suggestions would be very much appreciated.


        Regards,


        -- Alex

        --
        Report problems: http://perl.apache.org/bugs/
        Mail list info: http://perl.apache.org/maillist/modperl.html
        List etiquette: http://perl.apache.org/maillist/email-etiquette.html
      Your message has been successfully submitted and would be delivered to recipients shortly.