Apache случайным образом теряет разрешение на просмотр файлов

У меня есть сервер (Leopard Server, не мой выбор) под управлением Apache и MySQL. Несколько месяцев назад сервер начал выдавать "Запрещенные" ошибки через случайные промежутки времени, препятствуя доступу к PHP-приложению. Такое поведение случайно прекратилось.

Несколько дней назад я установил Passenger и развернул приложение Sintra/Rack. Приложение запускается как пользователь acarneg (например) из /Library/WebServer/Documents/presto/current/public, acarneg владеет всей структурой. _www пользователь имеет доступ к каталогу через ACL chmod +a "_www allow read,write,...",

Все отлично работает! Но после случайного интервала, часто ~12 или ~24 часов, Passenger выдает ошибку, которая также препятствует запуску приложения PHP. Passenger Error #2. Cannot stat file config.ru. Permission denied. Но разрешения не изменились (подтверждено), и все, что нужно сделать, чтобы устранить ошибку, это sudo apachectl graceful,

Если разрешения не меняются и Apache, похоже, не имеет законной проблемы, что является причиной этого беспорядка? Почему это прекратилось раньше и почему оно возобновилось!?!?!?

Спасибо за помощь!

2 ответа

Решение

Ваш Apache, вероятно, достигает максимального предела открытых файлов. Apache вызывает ошибки прав доступа, а также объясняет, почему это занимает некоторое время и устраняется путем перезагрузки Apache.

Я не очень знаком с Mac, но должна быть команда, чтобы проверить открытые файлы процесса. (например, lsof, pfiles, procfiles).

Возможные решения:

  • Увеличить максимальное количество открытых файлов (ulimit)
  • Уменьшите количество файлов журнала
  • Проверьте, закрывает ли код PHP все свои файлы

Смотрите также Ограничение дескриптора файла в документации Apache.

Где находится хранилище файловой системы? Требуется ли Kerberos для доступа к данным, или AFS или что-то еще, так что ваша проблема - билет с истекающим сроком?

Другие вопросы по тегам