Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^8: Multithreaded Server Crashes under heavy load

by rmahin (Beadle)
on Aug 31, 2012 at 21:16 UTC ( #991086=note: print w/ replies, xml ) Need Help??


in reply to Re^7: Multithreaded Server Crashes under heavy load
in thread Multithreaded Server Crashes under heavy load

Hey sorry about the CSV! I just opened it up in Libre Office as a comma delimited file, and it looked good. BUT! Good news. Think you're definitely right that I'm not closing connections properly. Think this is caused by commands that need to open other file handles, and not handling any errors correctly. For instance, I think the only command I included that has that behavior is the PUT command, which does  open( PUTFILE, ">$outfile" ) or threads->exit;. The threads->exit is clearly getting called, leaving the socket open. I fixed all those and added more messages to see when exactly it was happening, and it definitely seems to be working better. Have on more part of the code to look at using a subroutine that does not appear to be thread friendly, but will update on progress once I've determined if I solved it or not. Thanks for the direction!


Comment on Re^8: Multithreaded Server Crashes under heavy load
Select or Download Code
Re^9: Multithreaded Server Crashes under heavy load
by BrowserUk (Pope) on Aug 31, 2012 at 21:39 UTC
    which does open( PUTFILE, ">$outfile" ) or threads->exit;. The threads->exit is clearly getting called, leaving the socket open.

    FWIW: I have written a crap load of threaded perl code and never had occasion to use thread->exit;. It is IMO redundant and dangerous.

    I would code that line as simply:

    open( PUTFILE, ">$outfile" ) or return;

    That way, all the normal perl cleanup will take place before the thread function returns and the thread terminates.

    Try it, it just might sort out a lot of your problems!


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    RIP Neil Armstrong

      Hey sorry for the late reply, but I think everything is working great now! I essentially did what you suggested so looks like that was what was killing me. Been running for a week and no problems. Thanks very much for the help.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://991086]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2014-09-15 10:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (146 votes), past polls