web-dev-qa-db-ja.com

Apacheはランダムにファイルを表示する権限を失います

ApacheとMySQLを実行しているサーバー(Leopardサーバー、私の選択ではありません)があります。数か月前、サーバーはランダムな間隔で「禁止」エラーを発生させ始め、PHPアプリケーションへのアクセスを妨げました。この動作はランダムに停止しました。

さて、数日前にPassengerをインストールし、Sintra/Rackアプリケーションをデプロイしました。アプリケーションは、(たとえば)/Library/WebServer/Documents/presto/current/publicのユーザーacarnegとして実行され、acarnegが構造全体を所有します。 _wwwユーザーは、ACL chmod +a "_www allow read,write,..."を介してディレクトリにアクセスできます。

すべてがうまくいきます! しかしランダムな間隔(多くの場合約12時間または約24時間)の後、乗客はエラーをスローし、PHPアプリケーションの実行も妨げます。Passenger Error #2. Cannot stat file config.ru. Permission denied.しかし権限は変更(確認済み)されておらず、エラーを解決するために必要なのはSudo apachectl gracefulだけです。

権限が変更されておらず、Apacheに正当な問題がないように思われる場合、この混乱の原因は何ですか?なぜ以前に停止したのか、なぜ再開したのか!?!?!?

助けてくれてありがとう!

1
arbales

Apacheはおそらくオープンファイルの最大制限に達しています。 Apacheはパーミッションエラーを引き起こし、Apacheをリロードすることで解決するのに時間がかかる理由も説明します。

私はMacにあまり詳しくありませんが、プロセスの開いているファイルをチェックするコマンドがあるはずです。 (例:lsof、pfiles、procfiles)。

考えられる解決策は次のとおりです。

  • 開くファイルの最大数を増やす(ulimit)
  • ログファイルの数を減らす
  • PHPコードがすべてのファイルを閉じるかどうかを確認します

Apacheドキュメントの ファイル記述子制限 も参照してください。

5
basvdlei

ファイルシステムストレージはどこにありますか?問題がチケットの期限切れになるように、データやAFSなどにアクセスするためにKerberosが必要ですか?

1
Phil P