apache2 サーバー上のすべての関連ログファイルを一度に表示するには、次のようにします。
tail -f /var/kunden/logs/*log /var/kunden/logs/*log /var/log/apache2/*log |grep -v robots|grep -v favicon
しかし、今はこれらのファイルが多すぎるので、その制限を増やしたいと思います。
SSHセッションのために増やす方法は?世界的にどのように増やすことができますか?
マイコンピュータの開いているファイル制限が1024であることがわかります。
ulimit -n
1024
答え1
2種類の制限があることを知ることが重要です。
- ㅏハード制限ルートとしてのみ設定できます。これはソフト制限の可能な最も高い値(制限)です。
- ㅏソフトリミット一般ユーザーが設定できます。これが実際に適用される制限です。
シングルセッションソリューション
シェルでソフト制限を設定します。
ulimit -Sn 2048
この例では、実際の制限を2048に増やしますが、ハード制限ulimit -Hn
(check:)が同じかそれより高い場合にのみコマンドは成功します。より高い値が必要な場合は、次のいずれかの方法でハード制限を増やします。これらの制限はプロセスごとに設定され、新しく作成されたプロセスによって継承されるため、同じシェルでこのコマンドを実行した後に実行されるすべてのエントリには新しい制限が適用されます。
単一セッションでハード制限を変更する
ルートのみハード制限を変更でき、ルートに切り替えた後は元のユーザーに戻す必要があるため、簡単ではありません。解決策は次のとおりですsudo
。
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
フルシステムソリューション
Debianや他の多くのシステムでは、.confファイルに説明を含めることpam_limits
ができます。例示ライン:/etc/security/limits.conf
/etc/security/limits.d
@webadmins hard nofile 16384
@webadmins soft nofile 8192
webadmins
ログイン後、グループ内のユーザーのハード制限とデフォルトのソフト制限が設定されます。
その他の制限事項
ハード制限値は、オープンファイル記述子値のグローバル制限によって制限されます。/proc/sys/fs/file-max
これは、最新のLinuxディストリビューションでは基本的にかなり高いです。この値は、NR_OPEN
カーネルのコンパイル時に使用される値に制限されます。
より良い解決策はありませんか?
*log
指定したすべてのファイルがtail -f
実際に監視する必要があるアクティブファイルであることを確認できます。これらのファイルのいくつかはログ記録のために閉じられている可能性があるため、いくつかのファイルを開くだけです。
答え2
Apache error.logにPHP警告があります。
failed to open stream: Too many open files in ...
だから私はApacheが起動時に(Ubuntu 14.04で)この値を個別に設定することに気づきました。で構成されています/etc/apache2/envvars
。
## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'
だから3行目を調整する必要がありました。