[Apache2] split-logfile zonder delay

Pagina: 1
Acties:

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Ik draai Apache2 als webserver voor een aantal domeinen. De logfiles voor deze domeinen worden niet (meer) als aparte logfiles opgeslagen door middel van CustomLog maar in één groot access.log die vervolgens wordt gesplit door het meegeleverde Perl-scriptje genaamd 'split-logfile'.

Deze draai ik om het half uur, maar het nadeel hieraan is dat je dus soms 30 minuten moet wachten voordat de requests in de logfiles van de domeinen verschijnen. Nu weet ik dat er een manier is om dit direct te doen zonder vertraging, maar mét split-logfile. Echter kan ik hier niets over vinden; naar mijn weten zou ik het via piped logging kunnen doen maar dan wordt voor elke request een programma gestart wat ik nogal overdreven vind.

Hoe kan ik dit doen?

Verwijderd

Move PNS > SA

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Tnx :) en *schop* misschien dat hier het iemand weet?

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Nou ja, niemand dus. Dan geef ik het antwoord maar :+

Piped logging blijkt toch anders te werken, en door zoiets te doen:
CustomLog "|/usr/sbin/split-logfile" vcombined

Wordt er netjes één proces gestart van split-logfile dat alle requests afhandelt :) nadeel is alleen dat split-logfile logfiles openhoudt zodra hij ze een keer geopend heeft, en dat dat niet zo slim is qua performance (aangezien Apache hetzelfde treft). Hierdoor word ik nu genoodzaakt om de zoveel tijd een graceful restart te doen, iemand ideeën hierover?

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

De logfiles voor deze domeinen worden niet (meer) als aparte logfiles opgeslagen door middel van CustomLog maar in één groot access.log die vervolgens wordt gesplit door het meegeleverde Perl-scriptje genaamd 'split-logfile'.
Waarom split je in via de Apache configuratie niet gewoon dan? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Spider.007 schreef op donderdag 05 januari 2006 @ 19:41:
[...]
Waarom split je in via de Apache configuratie niet gewoon dan? :)
Als het woordje 'in' in jouw zin 'ze' betekent dan snap ik 'm :P

Apache houdt alle logfiles open zolang hij draait. Dit betekent dat als er straks 100 virtualhosts op die server draaien, er 200 logfiles open moeten staan. Oftewel, 200 file descriptors :) dit komt sowieso de performance niet ten goede, maar het kan dus ook zo zijn dat hij op een gegeven moment tegen een limit aanloopt. Om dit te voorkomen wordt de mainlog door een extern programma gefilterd en weggeschreven naar de goede bestanden.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Ik heb dit in mijn apache2.conf staan:
code:
1
CustomLog "|/usr/sbin/apache2splitlogfile" vhost env=VLOG


Levert geen enkel probleem op en ik hoef ook nooit een graceful restart te doen. Misschien werkt apache2splitlogfile en splitlogfile niet helemaal hetzelfde ?

"lsof | grep splitlogfile" levert niets op en "lsof | grep /var/log/apache2" gaf alleen maar de error_log en access_log aan. Alle losse logfiles zijn dus niet geopend.

Overigens:
code:
1
2
gerco@server apache2 $ ls -l VLOG* | wc -l
132

[ Voor 40% gewijzigd door Gerco op 06-01-2006 14:29 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

JeRa schreef op donderdag 05 januari 2006 @ 02:26:
Nou ja, niemand dus. Dan geef ik het antwoord maar :+

Piped logging blijkt toch anders te werken, en door zoiets te doen:
CustomLog "|/usr/sbin/split-logfile" vcombined

Wordt er netjes één proces gestart van split-logfile dat alle requests afhandelt :) nadeel is alleen dat split-logfile logfiles openhoudt zodra hij ze een keer geopend heeft, en dat dat niet zo slim is qua performance (aangezien Apache hetzelfde treft). Hierdoor word ik nu genoodzaakt om de zoveel tijd een graceful restart te doen, iemand ideeën hierover?
Is het openhouden van die file-descriptors niet beter voor de performance dan het telkens afsluiten en weer openen daarvan? Is het splitten van de logfiles (eens per uur ofzo) geen beter idee? :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

When using a large number of Virtual Hosts, Apache may run out of available file descriptors (sometimes called file handles) if each Virtual Host specifies different log files. The total number of file descriptors used by Apache is one for each distinct error log file, one for every other log file directive, plus 10-20 for internal use. Unix operating systems limit the number of file descriptors that may be used by a process; the limit is typically 64, and may usually be increased up to a large hard-limit.
Dat zou het probleem weleens kunnen zijn, file descriptors zijn een beperkte resource en blijkbaar zijn er normaal gesproken maar erg weinig van.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Gerco schreef op vrijdag 06 januari 2006 @ 14:26:
-snip-
Levert geen enkel probleem op en ik hoef ook nooit een graceful restart te doen. Misschien werkt apache2splitlogfile en splitlogfile niet helemaal hetzelfde ?
Zou je eens de contents van apache2splitlogfile kunnen posten, mits dat een script is? :)
De split-logfile die ik heb is erop gemaakt om files open te houden, helaas. Vandaar de graceful restart die ik af en toe moet doen. Met een kleine wijziging is dat trouwens om te bouwen.

Overigens, die grep die je op lsof uitvoert, beter doe je dat op het begin van de naam van het programma. Hier wordt bijvoorbeeld split-logfile afgekort tot split-log, waardoor een grep op logfile niet zou werken :)
Spider.007 schreef op vrijdag 06 januari 2006 @ 15:14:
[...]

Is het openhouden van die file-descriptors niet beter voor de performance dan het telkens afsluiten en weer openen daarvan? Is het splitten van de logfiles (eens per uur ofzo) geen beter idee? :)
Dat is zeker beter voor de performance, maar zoals al gezegd is zijn de file descriptors een beperkte resource :) en, zoals ik hier al zei:
JeRa schreef op zondag 01 januari 2006 @ 23:37:
...
Deze draai ik om het half uur, maar het nadeel hieraan is dat je dus soms 30 minuten moet wachten voordat de requests in de logfiles van de domeinen verschijnen.
Het is dus voor mij niet echt een optie om het om het half uur te doen, aangezien ik request direct in de logfiles wil terugzien :)

[ Voor 8% gewijzigd door JeRa op 06-01-2006 16:35 ]


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Heb nu split-logfile aangepast aan de hand van dit bestand:

http://dev.gentoo.org/~be.../sbin/apache2splitlogfile

Niet letterlijk overgenomen maar zo dat het voldeed aan mijn eisen. Vooralsnog lijkt het telkens openen en sluiten van logfiles geen probleem te zijn voor de performance.
Pagina: 1