Skocz do zawartości
Zaloguj się, aby obserwować  
exa

(24)Too many open files: /.htaccess pcfg_open file: unable to check htaccess file, ensure it is reada

Polecane posty

Witam,

 

mam poważny problem z apache, klient ma kilkaset vhostów i apache w pewnym momencie odmówił współpracy a w logach pojawiła się informacja o treści:

[Mon Nov 10 16:16:07 2008] [crit] [client 83.14.X.X] (24)Too many open files: /.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

 

Więc wygląda na problem limitów otwartych procesów, to samo podpowiada google. Zwiększyłem limit z 1024 plików do 32768, wpisałem w /etc/security/limits.conf :

* soft nofile 32768
* hard nofile 32768

Zrestartowałem maszynę, każdy użytkownik w systemie ma teraz zwiększoną ilość otwartych plików do 32768. Niestety apache znowu po niecałej godzinie zaczyna się wykrzaczać zapisując te same informacje w logu i przestając serwować pliki.

 

Co ciekawe wygląda na to, że apache ignoruje zwiększone przeze mnie limity:

~ # pidof httpd
27362 27361 27355 27092 27091 27085 26688 26687 26682 26621 26620 26619 26618 26617 26616 26615 26613 26608
~ # ls /proc/27362/fd/
Display all 1024 possibilities? (y or n)
~ # ls /proc/26608/fd/
Display all 1024 possibilities? (y or n)

Apache zaraz po starcie otwiera 1024 deskryptory plików. Ktoś spotkał się z tym problemem?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Używasz może APC ?

Ponieważ istnieje sobie taki jakby BUG APC :]]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Używasz może APC ?

Ponieważ istnieje sobie taki jakby BUG APC :]]

Też to wygooglowałem, ale klient ma czystą instalację PHP. System to gentoo OVH release 2 bez żadnych modyfikacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrick

Prze kompiluj apache z większa ilością (DFD_SETSIZE jak dobrze pamiętam).

 

Zrestartowałem maszynę, każdy użytkownik w systemie ma teraz zwiększoną ilość otwartych plików do 32768.

po co ? mogłeś limit zmienić w systemie dla apache :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

mógł też dodać jedną linijkę w /etc/init.d tudzież zrobić echo do sysctl,

 

no ale ważne, że działa...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Prze kompiluj apache z większa ilością (DFD_SETSIZE jak dobrze pamiętam).

Dzięki za naprowadzenie, szkoda, że ten wątek jest na pierwszym miejscu w google pod hasłem "apache DFD_SETSIZE".

 

Teraz jestem odcięty od internetu w domu; poprzez szybkie sprawdzenie na google parametr DFD_SETSIZE dotyczy tylko systemów FreeBSD i pochodnych.

 

Ten stary dokument http://www-01.ibm.com/software/webservers/...escriptors.html mówi, że pod Linuksem w zasadzie obowiązuje tylko ulimit, chyba, że na kernel nałożony jest limit 1024 (tylko nie wiem czy to ogranicza ulimit, chyba nie?). Jak tylko moje połączenie z internetem wróci to to sprawdzę. Jeżeli ktoś miałby w międzyczasie inne pomysły będę wdzięczny za pomoc.

 

po co ? mogłeś limit zmienić w systemie dla apache :P

Zainstalowany jest suexec, chciałem mieć 100% pewność.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrick

Gdy nie zmienisz: "CFLAGS="-DFD_SETSIZE=n""

 

Zmień w pliku /usr/include/bits/typesizes.h (ostatnia linijka) i prze kompiluj.

 

 

Zainstalowany jest suexec, chciałem mieć 100% pewność.

By zmienić dla apache ilość otwieranych plików wystarczyło w pliku startowym dopisać "ulimit -n x". Nie wiem co ma suexec do tego :P

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyedytowałem /usr/include/bits/typesizes.h, przekompilowałem apache i zero zmian. Wyeksportowałem CFLASG (na przykładzie widać, że jest uwzględnione)

/bin/sh /var/tmp/portage/net-www/apache-ovh-2.0.59/work/httpd-2.0.59/srclib/apr/libtool --silent --mode=compile gcc -pthread -DFD_SETSIZE=32768 -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -I../../include -I../../include/arch/unix -I../../include/arch/unix -c waitio.c && touch waitio.lo

ponownie zrekompilowałem i również nic to nie pomogło.

 

apache # grep -iR ulimit *
bin/apachectl:ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"
bin/apachectl:if [ "x$ULIMIT_MAX_FILES" != "x" ]; then
bin/apachectl:	$ULIMIT_MAX_FILES
build/config_vars.mk:APACHECTL_ULIMIT = ulimit -S -n `ulimit -H -n`
apache # ulimit -n -H
96768
apache # ulimit -n -S
96768

Nawet apache w Relese 2 ustawia ulimit przy starcie.

 

Teraz sprawdzenie liczy otwartych deskryptorów wygląda tak:

apache # ls /proc/3851/fd/
Display all 1025 possibilities? (y or n)

W tym miejscu się zdziwiłem. Za każdym razem po restarcie jest 1025 uruchomionych.

 

Serwer startuje po uruchomieniu z konsoli (przed rekompilacją też startował i działał). Klient używa WebMina i tu pojawia się problem. Po dodaniu każdej domeny/subdomeny należy zrestartować apache klikając na specjalny link. Po czym WebMin wyświetla:

Serwer Apache nie może być uruchomiony:

 

Apache nie wstaje a w logu pojawia się:

[Wed Nov 12 16:08:49 2008] [error] (24)Too many open files: Init: Can't open server certificate file /usr/local/apache/conf/ssl.crt/server.crt

 

Mam już dość.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Ze sie tak glupio i lamersko zapytam jaki O/S i jaka wersja jajka?

OVH Release 2 (distro na bazie Gentoo).

2.6.24.5-grsec-xxxx-grs-ipv4-32 #3 SMP Wed May 28 09:09:25 CEST 2008 i686 Intel(R) Celeron(R) CPU 2.66GHz GenuineIntel GNU/Linux

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×