From: Bruce W. <br...@mi...> - 2002-12-15 18:36:49
|
> >Anyone have any ideas on how to not have IO::Socket pause or maybe how to > >query for a valid socket before calling IO::Socket? > > > >At worst, we could decrease the frequency we check (currently every 5 > >seconds). > > > >Bruce > > > > > > > Can we fork this? I personally think that using a thread to handle an > event that does not require a response from the other computer should be > threaded. That would eliminate this problem. The thread could still log > the response, but that is all the response necessary in this instance, > right? The pause from IO::Socket when the port is down is only about 1 second (what I see anyway), so I'm not sure the complications with forking are worth it. Seems like simply checking less often then every 5 seconds would be acceptable. I would think this message, in bin/mh, would be a bigger pain: &speak("proxy $address is dead") if &new_minute(2); If you have proxies that you know are down, you probably don't care to hear that all the time. Maybe the best answer is to move that entier 'are the proxies alive' test into user code. For some, those proxies should be up all the time, for others, some maybe optional. Unless anyone has other suggestions, I'll move that test out of bin/mh and into the public/speak_proxy.pl code example (code I'll put into there is attached). Bruce # Check proxies. If down, this is slow (1-2 seconds), so don't do it too often if (new_second(5)) { for my $address (keys %proxy_servers) { my $proxy = $proxy_servers{$address}; if (!$proxy->active) { unless ($proxy->start) { &print_log("Proxy is dead: $address"); $address =~ s/\:\d+$//; # Shorten up name for speaking $address =~ s/.+\.(\d+)$/$1/; &speak("proxy $address is dead") if &new_minute(2); next; } } } } |