Skrypty mod_perl po pewnym czasie przestają widzieć system plików

0

Używam skryptów mod_perl pod Apache 2.4.18 na VPS pod Ubuntu 16.04. Skrypty otwierają pliki z dysku (szablony stron internetowych). Od czasu do czasu przestają widzieć te pliki, dziennik błędów serwera jest pełen następujących błędów:

[TIME] [: błąd] [pid PID: tid TID] błąd pliku - NAZWA PLIKU: nie znaleziono \ n

Te komunikaty są generowane przez pakiet szablonów, gdy open()funkcja Perl zwraca wartość false. Po ponownym uruchomieniu Apache pliki są ponownie widoczne, ale tylko przez pewien czas. Po chwili problem pojawia się ponownie.

Co może być przyczyną takiego zachowania?

Ruslan Batdalov
źródło

Odpowiedzi:

2

Być może mod_perl / apache nie zamyka poprawnie uchwytów plików. Po pewnym czasie, gdy zostanie osiągnięta maksymalna liczba otwartych plików (1024 miękkie / 4096 trudno zobaczyć ulimit -Sn;ulimit -Hn), ponowne uruchomienie apache zamyka wszystkie przestarzałe uchwyty.

Następnym razem, gdy wystąpi błąd, możesz zbadać tę teorię, pobierając pid z apache / perl.

# ps aux | grep apache

lub

# pidof apache

lub moduł perla, jeśli ma własny proces ..

próbka wyjściowa:

28294

Plik listy otwarty przez PID

# lsof -p 28294
# lsof -a -p 28294
# counting
# lsof -a -p 28294| wc -l

lub

# cd /proc/28294/fd
# ls -l | less
# count open files with
# ls -l | wc -l
Michael D.
źródło