同時接続が多い場合、nginx は Apache サーバーの良い代替手段となります。 nginx は、レイヤー 7 負荷分散サーバーとしても使用できます。テスト結果によると、nginx 0.6.31 php 5.2.6 (fastcgi) は 30,000 を超える同時接続に耐えることができます。これは、同じ環境における Apache の 10 倍に相当します。
しかし、nginx を使用すると、多くの人が 500 エラーを受け取ります。私の使用法によれば、その原因の大部分は、ファイルを開くハンドルが小さすぎることです。
Linux では、このコマンドを使用して、プロセスによって開かれるファイル ハンドルを増やします。
ulimit -shn 51200
デフォルトは 1000 のみです。リンク数が少ない場合は表示されませんが、この処理方法を使用すると、500 エラーの発生を効果的に防ぐことができます。
今日 Web サイトにアクセスすると、時折 500 内部サーバー エラーのエラー ページが表示されました。
関連情報を確認したところ、過剰なアクセスと制限されたシステム カーネル プロセスが原因であると考えられました。
答えは次のとおりです。
$ ulimit -n
11095
プログラムは、開かれるファイルを 11095 個のみに制限します。ulimit コマンドは、現在のユーザーのプロセスが持つことができるファイル記述子の数を設定します。シミュレートされた同時実行数のようです 多すぎます。nginx.conf で同時設定の数を調整する必要があります (私の構成ホストには 2g のメモリと 2.8g の CPU があります。)
events {
worker_connections 1024;
}
# に調整します。
##コードをコピーします。コードは次のとおりです。
events {
worker_connections 10240;}
上記の問題は依然として発生します。
8192
ファイル システムで開けるファイルの最大数
[root@qimutian nginx]# ulimit -n
1024
プログラムは、開くことができるファイルを 1024 個のみに制限します
[root@qimutian nginx] を使用します。 # ulimit -n 8192
を調整するか、ファイルの最後に追加して、開いているファイルの数を永続的に調整します。起動ファイル /etc/rc.d/rc.local (/etc/sysctl.conf の末尾に fs.file-max=8192 を追加)
ulimit -n 8192
で開いているファイルの数を調整します。 centos5
Use ulimit -a and find that open files can contain 1024 bydefault. While the tress test Yesterday, a 500 error happens. Please check
for each. nginx shows 500 Internal Server error
I wake up朝確認してみたら、次のように調整されていたことが分かりました。
方法1(恒久的な調整)
vi /etc/security/limits.conf
ファイルの最後に追加:
* ソフト nofile 8192
* ハード nofile 20480
同時に、vi /etc/sysctl.conf の最後に
fs.file-max=8192
を追加して再起動し、ulimit を使用します-n で表示します。番号はすでに 8192 です。
方法 2 (一時的な使用)
ターミナルに ulimit -n 8192 を直接入力し、Enter キーを押すと OKです。
500 内部サーバー エラー エラー補足:
1. ハードディスクの空き容量がいっぱいですdf -k を使用して、ハードディスクの空き容量がいっぱいかどうかを確認します。ハードドライブの空き容量を増やすと、500 エラーを解決できる場合があります。 nginx でアクセス ログが有効になっている場合、アクセス ログが必要ない場合はアクセス ログを閉じることをお勧めします。アクセスログはハードディスクの容量を多く消費します。
2. nginx 設定ファイルのエラー
これは構文エラーを指すものではなく、nginx の設定ファイルに構文エラーがある場合、起動時にプロンプトが表示されます。書き換えを構成する場合、一部のルールが適切に処理されないと 500 エラーが発生する可能性があります。書き換えルールをよく確認してください。構成ファイル内の一部の変数が不適切に設定されている場合、値のない変数を参照するなど、500 エラーも発生します。
3. 上記の問題がいずれも存在しない場合は、シミュレートされた同時実行数が多すぎる可能性があるため、nginx.conf で同時実行数の設定を調整する必要があります。
解決策は次のとおりです:
1 /etc/security/limits .conf ファイルを開き、2 つの文を追加します。
コードをコピーします。 コードは次のとおりです。
* Soft nofile 65535
* Hard nofile 65535
2 /etc/nginx/nginx.conf を開きます。
コードをコピーします。コードは次のとおりです。
worker_rlimit_nofile 65535 ;
3 nginx を再起動してリロードします 設定を入力します
コードをコピーしますコードは次のとおりです:
kill -9 `ps -ef | grep php | grep -v grep | awk '{print $2}'`
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -c 100 -u www-data -f /usr/bin/php-cgikillall -hup nginx
再起動して再度確認してください。nginx エラー ログには、500 エラーは見つかりませんでした。
以上がnginx プロンプト 500 内部サーバー エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。