Недавно я обновился до OSX Mavericks, и с тех пор я начал получать вышеупомянутую ошибку на моей машине разработки. В коде нет очевидной проблемы (это автоматически созданное приложение Yii). Что произошло в рамках обновления до Mavericks:
- PHP был обновлен с 5.2.x, который в комплекте с OSX Lion до 5.4.x.
- Мне пришлось получить Zend Debugger для PHP 5.4, установив Zend Server, подбирая ZendDebugger.so и удаляя Zend Server ( все это, потому что Zend не предоставляет автономную версию своего отладчика для php 5.4.x).
С тех пор я получаю эту проблему после загрузки и перезагрузки веб-сайта несколько раз. После возникновения этой ошибки мой веб-сервер продолжает возвращать ту же ошибку для любого другого приложения, размещенного на localhost. Я должен упомянуть, что статические веб-страницы обслуживаются нормально.
Я видел несколько потоков по этой теме. Большинство из них указывает на проблемы с кодом, где дескрипторы файлов закрываются неправильно, тем самым преодолевая порог ограничения открытого файла. Я также нашел этот поток, который, кажется, предполагает, что это может быть проблемой отладчика zend. Там также отчет об ошибках, поданный для php 5.2.x. Следуя нити здесь, я пробовал следующее:
$ ulimit -a
который сообщает:
open files (-n) 256
Кроме того,
sysctl -a | grep files
возвращает
kern.maxfiles = 12288
kern.maxfilesperproc = 10240
kern.maxfiles: 12288
kern.maxfilesperproc: 10240
kern.num_files: 3248
Еще одна интересная тема предлагает повысить этот предел (в настоящее время 256), используя:
ulimit -n 1024
Я пробовал все, но ничего не работает. Проблема также не всегда воспроизводима.
Мне интересно, что использование ulimit -n 1024
будет влиять на apache, поскольку из того, что я прочитал, это влияет на количество файлов, которые могут открывать оболочки.
Любая помощь приветствуется.
EDIT:
- Перезапуск
apache
помогает немного, пока ошибка не встретится снова. - Кроме того, помогает оставить веб-сервер на холостом ходу (без определенного интервала).