This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

[9.200] high httpproxy cpu usage

Since the update to 9.200, I've seen httpproxy causing 100% cpu usage a few times a day, the proxy becomes unresponsive (webadmin, etc seem to be still OK, though). Restarting just the proxy alleviates the problem, plus I've seen it restart on its own if left long enough. 

 
Normally, httpproxy only consumes between 50 and 150% CPU on 4 cores. I'm Running the software version on VMWare.

Any thoughts?


This thread was automatically locked due to age.
Parents
  • It is perl that is doing the regex for us, and there is a limit (which we can control) over how much memory (buffer) it can use to do a single lookup.  This limit is there because really bad regex can ruin a system (see Runaway Regular Expressions: Catastrophic Backtracking)

    How much buffer memory is needed for regex is a function of sting length and regex complexity.  Suffice it to say that any regex that must search the entire string will use more buffer.  The buffer that we have for a long time is unchanged in 9.2.  It only runs out of buffer if the regex includes a .* and the URL is roughly >1500 characters.  Long URLs are becoming more common as time goes on so we are seeing the poor regex exposed more.  Increasing buffer size only makes the problem occur later.

    Yes within a character set the . is literal.  More information can be found here Regexp Tutorial - Character Classes or Character Sets
Reply
  • It is perl that is doing the regex for us, and there is a limit (which we can control) over how much memory (buffer) it can use to do a single lookup.  This limit is there because really bad regex can ruin a system (see Runaway Regular Expressions: Catastrophic Backtracking)

    How much buffer memory is needed for regex is a function of sting length and regex complexity.  Suffice it to say that any regex that must search the entire string will use more buffer.  The buffer that we have for a long time is unchanged in 9.2.  It only runs out of buffer if the regex includes a .* and the URL is roughly >1500 characters.  Long URLs are becoming more common as time goes on so we are seeing the poor regex exposed more.  Increasing buffer size only makes the problem occur later.

    Yes within a character set the . is literal.  More information can be found here Regexp Tutorial - Character Classes or Character Sets
Children
No Data