use FS::torrus_srvderive;
our $DEBUG = 2;
-our $max_kids = 3;
+our $max_kids = 6;
+our $search_timeout = 30*60; # 15*60 5*60; #$torrus_srvderive->last_srv_date ? 5*60 : 15*60);
our %kids;
my $user = shift or die &usage;
my $orderlimit = "
ORDER BY srv_date, srv_time
- LIMIT 50
-";
+ LIMIT 100
+"; #50?
+
+if ( driver_name eq 'mysql' ) {
+ dbh->do('SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED');
+ dbh->commit or die dbh->errstr;
+}
our $kids = 0;
&reap_kids;
if ( $kids >= $max_kids ) {
sleep 5;
+ myexit() if sigterm() || sigint();
redo;
}
my @serviceids = $torrus_srvderive->component_serviceids;
exit unless @serviceids; #don't try to search for empty virtual ports
+ #nonlocking select statements; rows in this table never change
+ if ( driver_name eq 'mysql' ) {
+ dbh->do('SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED');
+ dbh->commit or die dbh->errstr;
+ }
+
my @in = ();
for my $dir ('_IN', '_OUT') {
push @in, map dbh->quote("$_$dir"), @serviceids;
eval {
my $h = set_sig_handler( 'ALRM', sub { die "_timeout\n"; } );
- alarm(15*60); #5*60); #$torrus_srvderive->last_srv_date ? 5*60 : 15*60);
+ alarm($search_timeout);
$sth->execute($serviceid, $serviceid) or die $sth->errstr;
alarm(0);
};
die $@;
}
- warn "search finished; checking results\n" if $DEBUG;
+ warn "search for $serviceid finished; checking results\n" if $DEBUG;
my $prev = 0;
while ( my $row = $sth->fetchrow_arrayref ) {
myexit() if sigterm() || sigint();
warn "restarting main loop\n" if $DEBUG > 1;
- sleep 60 unless $found;
+ #sleep 60 unless $found;
}
sub _shouldrun {