Korzystam z systemu Mac OS X 10.9.4, w tym wbudowanego serwera Apache2 z PHP 5.5.14 z brew (pakiety: php55, php55-intl, php55-pdo-pgsql, php55-xdebug).
Po uruchomieniu tej konfiguracji działa całkiem dobrze. Jednak po pewnym czasie będę uruchamiać na błędach 403 dla każdego żądania. Przejrzałem dziennik błędów apache i znalazłem coś takiego:
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Warning: require_once(/Users/daniel/Development/massiveart/sulu-complete/app/bootstrap.php.cache): failed to open stream: Too many open files in /Users/daniel/Development/massiveart/sulu-complete/web/website.php on line 10, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP 1. {main}() /Users/daniel/Development/massiveart/sulu-complete/web/website.php:0, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Fatal error: require_once(): Failed opening required '/Users/daniel/Development/massiveart/sulu-complete/web/../app/bootstrap.php.cache' (include_path='.:/usr/local/Cellar/php55/5.5.14/lib/php') in /Users/daniel/Development/massiveart/sulu-complete/web/website.php on line 10, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP Stack trace:, referer: http://sulu.lo/de
[Fri Jul 25 05:28:18 2014] [error] [client 127.0.0.1] PHP 1. {main}() /Users/daniel/Development/massiveart/sulu-complete/web/website.php:0, referer: http://sulu.lo/de
[Fri Jul 25 05:28:40 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:41 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:45 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
[Fri Jul 25 05:28:45 2014] [crit] [client 127.0.0.1] (24)Too many open files: /Users/daniel/Development/massiveart/sulu-complete/web/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable, referer: http://sulu.lo/de
Wygląda mi na to, że pliku nie można już odczytać i jakoś zwraca 403. Dowiedziałem się już o niektórych limitach, ale zwraca returnctl Mam nieograniczony twardy limit na otwarte pliki:
~ $ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 256 unlimited
Próbowałem już także ustawić maxfiles na 4096 za pomocą polecenia launchctl limit maxfiles 4096 16384
, ale problem nadal powraca po pewnym czasie. Masz pomysł, co jeszcze mogę sprawdzić?
AKTUALIZACJA : Po uruchomieniu lsof -c httpd
polecenia, zgodnie z sugestią Gordona Davissona, widzę, że istnieje mnóstwo wpisów takich jak:
httpd 1361 _www 15u IPv4 0xb306b48659f63853 0t0 TCP localhost:50603->localhost:cslistener (CLOSED)
Mogę powiedzieć, że aplikacja, której używam, korzysta z websockets, a także korzysta z rezerwy, gdy websockets nie są dostępne lub ich odpowiednik nie działa na serwerze. Co mnie (CLOSED)
dezorientuje to -part, dlaczego wciąż jest na liście?
AKTUALIZACJA : Po pewnym czasie przejrzałem port cslistener, który w rzeczywistości ma 9000, czyli znowu ten port, który xdebug oczekuje na zdalne debugowanie. Wydaje mi się, że mam tam złą konfigurację lub błąd w xdebug (używam XDebug 2.2.5, zainstalowanego przez brew)