Andreas Leppert schrieb: >was kann ich tun? Mehr Speicher installieren?? :^)
Es scheint mir dass 256MB ist zu wenig, wegen den Riesen-cache-file, obwohl Sie dreimal so viel swap haben. Und wenn die httpd Prozessen auch noch drin passen muessen.... -- Michael S Hill <[EMAIL PROTECTED]> IBM Global Services (303)924-9001 T/L 263-9001 Boulder, CO "Andreas Leppert" <[EMAIL PROTECTED]> Sent by: [EMAIL PROTECTED] 05/10/04 02:15 PM Please respond to analog-help To: [EMAIL PROTECTED] cc: Subject: [analog-help] serverabsturz durch analog hi analog list, ich hab nen webserver, auf dem viele domains drauf sind, alles laeuft soweit ganz gut, nur eine seite macht probleme, die am meisten traffic auf dem server verursacht. bei den naechtlichen cronjobs wird u.a. auch ein script names 00updatestats aufgerufen, welches dann analog aufruft. hier meine analog.conf: # Configuration file for analog 4.03 # Extra options used for generating the log data for OpCenterWeb CACHEOUTFILE none DNS NONE #WARNINGS OFF #APACHELOGFORMAT ("%h %l %u %t \"%r\" %>s %b \"%{User-Agent}i\"") #LOGFORMAT (%S %l %j [%d/%M/%Y:%h:%n:%j] \"%j%w%r%wHTTP%j\" %c %b \"%B\") LOGFORMAT COMBINED LOGFILE none OUTPUT COMPUTER OUTFILE - GENERAL ON MONTHLY ON MONTHCOLS RrPp WEEKLY OFF FULLDAILY OFF DAILY ON DAYCOLS RrPp FULLHOURLY OFF HOURLY ON HOURCOLS RrPp QUARTER OFF FIVE OFF HOST ON HOSTCOLS RrPp HOSTFLOOR 1:r ORGANISATION ON ORGCOLS RrPp ORGFLOOR 1:r DOMAIN ON DOMCOLS RrPp DOMSORTBY REQUESTS DOMFLOOR 1:r SUBDOMFLOOR 1:r SUBDOMSORTBY REQUESTS REQUEST OFF DIRECTORY ON DIRCOLS Rrb FILETYPE ON TYPECOLS Rrb SIZE OFF PROCTIME OFF REDIR OFF FAILURE ON FAILCOLS Rr REFERER OFF REFSITE OFF SEARCHQUERY OFF SEARCHWORD OFF REDIRREF OFF FAILREF OFF FULLBROWSER OFF BROWSER ON BROWFLOOR 1:r BROWCOLS Rr BROWSORTBY REQUESTS SUBBROWSORTBY REQUESTS SUBBROWFLOOR 1:r OSREP OFF VHOST OFF USER OFF FAILUSER OFF STATUS OFF HOSTLOWMEM 3 die seite verursacht so um die 30 GB traffic monatlich, denk mal ihr habt schon groessere seiten gehabt. das script, welches analog aufruft, sieht so aus: #!/usr/bin/perl -w use integer; my($oneday) = 86400; my($oneweek) = 604800; sub analyze { # print STDERR "$_[0]\n"; if ($ENV{'OSTYPE'} =~ /^solaris/i) { system ("/usr/local/analog4.03/analog $_[0]"); } else { system ("/usr/bin/analog $_[0]"); } } #Process the command line arguments if ($#ARGV != 1) { die "The number of arguments is wrong\nUsage updatestats statsdir logfile\n"; } my($statdir,$logfile) = @ARGV; my($analogconffile) = "$statdir/analog.cfg"; my($time) = time; my($thisweekstat) = "$statdir/week".&getweeksbefore(0,$time); my(@stattodelete) = (); #we sometimes do garbage collection my($timeoption,$logoption); my($weeklyoption) = "+g$analogconffile +C\"MONTHLY OFF\""; my($cachefile) = "$statdir/cache"; my($runningoption) = "+g$analogconffile +C\"CACHEFILE $cachefile\""; unless (stat ("$thisweekstat")) { # build the statistics for last week one more time my ($lastweekstat) = "$statdir/week".&getweeksbefore(1,$time); @stattodelete = ("$statdir/week".&getweeksbefore(4,$time), "$statdir/week".&getweeksbefore(5,$time)); #just playing it safe, normally the first should be enough $timeoption = "+F".&firstdayofweek(1,$time)." +T".&lastdayofweek(1,$time); $logoption = "+C\"LOGFILE $logfile\" +C\"LOGFILE $logfile.1\" +C\"LOGFILE $logfile.2\""; #normally the last two should be enough analyze("$weeklyoption $timeoption $logoption >$lastweekstat"); if ( -e "$lastweekstat" ) { chmod(0640,"$lastweekstat") ; } #Get rid of "false ampty reports" my ($hastogo)=""; if (open (LASTWEEK,$lastweekstat)) { my ($line); while ($line=<LASTWEEK>) { next if ($line !~ /^x\sSR\s(\d+)/); last if ($1 != 0); last if (stat($logfile.1)); $hastogo=1; last; } close(LASTWEEK); if ($hastogo) {unlink($lastweekstat)} } } #build statistics for this week $timeoption = "+F".&firstdayofweek(0,$time)." +T".&lastdayofweek(0,$time); $logoption = "+C\"LOGFILE $logfile\" +C\"LOGFILE $logfile.1\""; analyze("$weeklyoption $timeoption $logoption >$thisweekstat"); if ( -e "$thisweekstat" ) { chmod(0640,"$thisweekstat"); } if (@stattodelete) { map {unlink($_)} @stattodelete; } #Now we deal with the running total #Update the cache if the logs have been rotated since last call my (@statinfo); if (@statinfo = stat ("$logfile.1")) { my ($logmtime,$cachemtime); $logmtime = $statinfo[9]; if(@statinfo = stat ("$cachefile")) { $cachemtime = $statinfo[9]; } else { $cachemtime = 0; } if ($cachemtime != $logmtime) { #build new cache analyze("$runningoption +C\"LOGFILE $logfile.1\" +C\"CACHEOUTFILE $cachefile.new\" +C\"OUTPUT NONE\""); utime($logmtime,$logmtime,"$cachefile.new"); rename("$cachefile.new","$cachefile"); if ( -e "$cachefile" ) { chmod(0640,"$cachefile"); } } } analyze("$runningoption +C\"LOGFILE $logfile\" >$statdir/running"); if ( -e "$statdir/running" ) { chmod(0640,"$statdir/running") ; } #returns the number of the week of the year we were in x weeks before $time sub getweeksbefore { my ($diff,$time) = @_; $time -= $oneweek*$diff; # $diff weeks ago my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time); if ($wday > $yday) { #this week started last year, so we count it there ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time-$oneweek); $yday+=7; } return 1+($yday-$wday)/7; #1..53 } sub firstdayofweek { my ($diff,$time) = @_; $time -= $oneweek*$diff; # $diff weeks ago my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time); $time -= $oneday*$wday; # last Sunday ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time); $year = ($year>=100 ? $year%100 : $year); return sprintf ("%02d%02d%02d",$year,$mon+1,$mday); } sub lastdayofweek { my ($diff,$time) = @_; $time -= $oneweek*$diff; # $diff weeks ago my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time); $time += $oneday*(6-$wday); # this Saturday ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)= localtime($time); $year = ($year>=100 ? $year%100 : $year); return sprintf ("%02d%02d%02d",$year,$mon+1,$mday); } wie ihr seht werden in dem script einige einstellungen per kommandozeile uebergen, so z.b. das cache-file. dies ist ziemlich gross,: -rw-r----- 1 root root 385M May 2 06:01 cache wird das ganze ausgefuehrt, kann ich per top und ps faux genau mitschauen, wie das system platt gemacht wird, besser gesagt wie der speicher immer weniger wird. es wird auch immer wieder kswapd angezeigt, sprich es wird fleissig auf die platte ausgelagert. das system: 2.0 ghz celeron, 256 ram + 768 MB swap... irgendwann ist das system so langsam, dass gar nix mehr geht. ich denke das liegt an dem riesen cache file, oder? was kann ich tun? danke fuer eure muehe andi leppert _____________________________________________________________________ Der WEB.DE Virenschutz schuetzt Ihr Postfach vor dem Wurm Netsky.A-P! Kostenfrei fuer alle FreeMail Nutzer. http://f.web.de/?mc=021157 +------------------------------------------------------------------------ | TO UNSUBSCRIBE from this list: | http://lists.isite.net/listgate/analog-help/unsubscribe.html | | Digest version: http://lists.isite.net/listgate/analog-help-digest/ | Usenet version: news://news.gmane.org/gmane.comp.web.analog.general | List archives: http://www.analog.cx/docs/mailing.html#listarchives +------------------------------------------------------------------------ +------------------------------------------------------------------------ | TO UNSUBSCRIBE from this list: | http://lists.isite.net/listgate/analog-help/unsubscribe.html | | Digest version: http://lists.isite.net/listgate/analog-help-digest/ | Usenet version: news://news.gmane.org/gmane.comp.web.analog.general | List archives: http://www.analog.cx/docs/mailing.html#listarchives +------------------------------------------------------------------------