Apache închide fiecare fișier jurnal după fiecare scriere?
Folosește sursa, este la:
https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/loggers/mod_log_config.c?view=markup
Puteți citi din el:
251 * log_writer este NULL înainte ca fișierul jurnal să fie deschis și este
252 * setat la o structură opacă (de obicei un fd) după ce este deschis.
Genul acesta indică faptul că este deschis o singură dată.
De fapt, dacă te uiți la cod, acesta este deschis devreme, la inițializare, și apoi niciodată închis, din motive evidente de performanță.
Dacă Nu, care este soluția atunci când aveți mai multe servere care scriu într-o singură locație de înregistrare pe un sistem de fișiere de rețea?
Absolut niciodată să nu faci asta, din două motive. În primul rând, nu vă conectați de la distanță în acest fel. Înregistrați-vă local (și expediați fișierele de jurnal separat, puteți roti din oră, de exemplu) sau utilizați demonii corespunzători, syslog
știe în mod implicit cum să expedieze conținutul jurnalului prin UDP (sau TCP), la fel ca și soluțiile mai noi. Nu montați un disc la distanță și nu scrieți fișiere de jurnal pe el, asta va distruge performanța și va crea o grămadă de probleme (mai ales dacă vă referiți la distanță ca în „NFS”).
Și chiar dacă la nivel local, fiecare aplicație ar trebui să se conecteze la propriul fișier jurnal, nu are mai multe aplicații care se conectează la același fișier, acest lucru este obligat să creeze tot felul de condiții de cursă, să suprascrie, etc. Apache în sine este o aplicație chiar dacă se furcă. , dar dacă ați avut 2 Apache care rulează separat pe aceeași gazdă cu configurații diferite, fiecare ar trebui să se conecteze la propriile fișiere de jurnal.
Sau uitați-vă la caracteristica Apache pentru a vă conecta la conducte, dar acest lucru are și dezavantaje.