CGI Hung Process Help!

Sivakatirswami katir at hindu.org
Tue May 8 06:27:54 EDT 2007


Dave, thanks, I have about 6 CGI's regularly appearing as hung.
Some show up only once a week.

The guestbook.cgi is very high traffic. A sweet spot for spammmers
and I don't know what happens if someone tries to dump a huge
chunk of data into the comments field (I used to see that a lot
before we implemented the captcha visual check) he regularly hangs
at least once in 72 hours... so I will test this solution on that one
and if it doesn't appear again in one week we know we nailed it.

Questions below....

ps. to Bernard... suggestion on logs. good one! I'll do it. tks

At least this dual XEON box has four CPU's....otherwise
our web site(s) would have died a long time ago on this problem.

> On 5 May 2007, at 23:09, Sivakatirswami wrote:
> 
>>
>>     repeat until length(PostIn) >= $CONTENT_LENGTH
>>         read from stdin until ""
>>             put it after PostIn
>>       end repeat


Dave Cragg wrote:
> 
> I'd suspect this part. I used to use this approach, but ran into trouble 
> after moving some scripts to a new server. If something happens to stall 
> the connection during the read process, you'll be in an endless loop, 
> possibly with high CPU usage.
> 
> I've started using something like this. It puts a limit on how many 
> "empty reads" happen before bailing out.  (I copied this quickly, and 
> modified slightly to remove some application specific code. Check before 
> using.):
> 
> local sPostdata = ""
> local sDataRead = false
> local sReadCount = 0
> local sEmptyReadCount = 0
> local sEmptyReadLimit = 200
> local sShortRead = false
> 
> 
> on startup
> 
>  readData
>  repeat while sDataRead = false
>     wait for messages
>   end repeat

## skts: I don't understand "wait for messages" what does that do?

## The rest of this is quite transparent.


>   if sShortRead then
>        ## exit routine needed here

# a good place to use Bernard's log suggestion...
# which will also help confirm that this is the culprit.


>   end if
> 
>   ## carry on
> 
> end startup
> 
> on readData
>    read from stdin for $CONTENT_LENGTH
>    put it into tTemp
>    add 1 to sReadCount
>    if tTemp <> empty then
>      put tTemp after sPostdata
>     else
>       add 1 to sEmptyReadCount
> 
>    end if
>    if length(sPostdata) < $CONTENT_LENGTH then
>      if sEmptyReadCount < sEmptyReadLimit then
>        send readData to me in 50 milliseconds
>      else
>        put true into sDataRead
>        put true into sShortRead
>      end if
>    else
>      put true into sDataRead
>    end if
> end readData
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your 
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
> 

-- 
Om shanti
(In  Peace)

Sivakatirswami
www.himalayanacademy.com

Get Hinduism Today Digital Edition. It's Free!
http://www.hinduismtoday.com/digital/



More information about the use-livecode mailing list