今日、Nginxを使っていたら500エラーが発生しました。エラーコードを検索してみんなに共有しました。 500 (内部サーバー エラー) サーバーでエラーが発生したため、要求を完了できませんでした。 Nginx 500 エラー (内部サーバー エラー): 500 エラーは内部サーバー エラーを指し、サーバーが予期しない状況に遭遇し、要求を処理できなかったことを意味します。 同時接続数が多い場合、Nginx は Apache サーバーの優れた代替手段となります。 Nginx はレイヤー 7 負荷分散サーバーとしても使用できます。テスト結果によると、Nginx 0.6.31 + PHP 5.2.6 (FastCGI) は 30,000 以上の同時接続を処理でき、これは同じ環境下での Apache の 10 倍です。 しかし、Nginx を使用すると 500 エラーが発生するケースが多くあります。私の経験では、次のような状況があります。 1. ディスク容量が不足していませんか? df -k を使用して、ハードディスクの容量がいっぱいかどうかを確認します。ハードドライブの空き容量を増やすと、500 エラーを解決できます。 nginx でアクセス ログが有効になっている場合は、アクセス ログが必要ない場合は無効にすることをお勧めします。アクセス ログは大量のハード ディスク領域を占有します。 2. nginx 設定ファイルが間違っていますか? これは構文エラーを指すものではありません。nginx 設定ファイルに構文エラーがある場合は、起動時にプロンプトが表示されます。書き換えを設定する際に、一部のルールが適切に処理されず、500 エラーが発生する可能性があります。書き換えルールを慎重に確認してください。値のない変数を参照するなど、構成ファイル内の一部の変数が正しく設定されていない場合にも、500 エラーが発生することがあります。 3. 上記の問題がいずれも発生しない場合は、シミュレートされた同時実行数が多すぎる可能性があり、nginx.confの同時実行設定数を調整する必要があります。 4. もう1つの問題は、Linuxインデックスノード(inode)がいっぱいで障害が発生することです。df -i inode の満杯により発生する 500 問題 https://www.jb51.net/article/175430.htm inode は中国語でインデックス ノードと翻訳されます。各ストレージ デバイス (ハード ディスクなど) またはストレージ デバイスのパーティションがファイル システムとしてフォーマットされると、2 つの部分 (inode とブロック) が作成されます。ブロックはデータを保存するために使用されます。 inode は、ファイル サイズ、所有者、ユーザー グループ、読み取りおよび書き込み権限などのデータ情報を保存するために使用されます。 inode は各ファイルの情報をインデックスするため、inode 値が存在します。オペレーティング システムは、指示に基づいて inode 値を通じて対応するファイルをできるだけ早く見つけることができます。 サーバーにはまだブロックが残っていますが、inode はいっぱいです。そのため、新しいディレクトリまたはファイルを作成するときに、ディスク容量が不足していることを示すメッセージが表示されます。 一般的な分析のアイデア: (1)nginxエラーログとphpエラーログを確認する nginx エラー ログ error.log のデフォルトの場所: /usr/local/nginx/logs (2)開いているファイルが多すぎる場合は、nginxのworker_rlimit_nofileパラメータを変更し、ulimitを使用してシステムの開いているファイルの制限を確認し、/etc/security/limits.confを変更します。 (3)スクリプトの問題であれば、スクリプトエラーを修正し、コードを最適化する必要がある。 (4)すべての最適化が完了した後も開いているファイルが多すぎる場合は、トラフィックを異なるサーバーに分散する負荷分散を検討する必要があります。 解決策は次のとおりです: 1 /etc/security/limits.confファイルを開き、2つの文を追加します。 コードは次のとおりです。 * ソフトノーファイル 65535 * ハードnofile 65535 2 /etc/nginx/nginx.confを開く worker_processesの下に1行追加する コードは次のとおりです。 ワーカー_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-cgi キルオール -HUP nginx 再起動後、nginx エラー ログを確認しましたが、500 エラーは見つかりませんでした。 4. データベースの問題かもしれません。nginx ログと php ログでは問題は見つかりませんでした。最終的に、データベースにアクセスできないことがわかりました。修正後、問題は解決しました。 上記の方法でも問題が解決しない場合は、設定またはプログラムにエラーがある可能性があります。 1 nginx エラー ログをチェックして、考えられる原因を見つけます。 一部の PHP 拡張機能がインストールされていないというメッセージが表示されたら、php.ini に移動して対応する拡張機能を開くか、対応する拡張機能をインストールし、nginx と php-fpm を再起動して、ページを再度更新します。 2 データベース接続に問題がある場合は500エラーも発生する可能性がありますが、ログには必ず反映されます ログに、対応するデータベース接続に問題があることが示されている場合は、データベース接続が正しいかどうかを確認する必要があります。ログに従って、対応するファイルを変更します。データベースの問題が解決されると、ページは正常に戻ります。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQLでよく使われる4つのストレージエンジンについて簡単に説明します。
序文アプリケーション シナリオ: おそらく、内部 Web サイトは外部ユーザーにアクセス可能である必...
XHTML タグとは何ですか? XHTML タグ要素は、XHTML ドキュメントの基本的なコンポーネ...
VMware と Ubuntu を再インストールしましたが、コマンドラインプロンプトが単調すぎて美し...
目次1. 当初の需要2. 解決策3. 運河の導入と設置運河の仕組み建築インストール4. 検証1. 当...
注意:仮想マシンのメモリは2G以上が推奨され、 Alibaba Cloudのアクセラレーションイメー...
1. サーバーにDockerをインストールする yumでdockerをインストール設定ファイルを変更...
目次1. 部品2. BOMの構成2. ウィンドウオブジェクトの共通イベント1. ウィンドウ読み込みイ...
ほとんどのブラウザはデフォルトで入力値をキャッシュし、ctl+F5 を使用して強制的に更新することに...
目次非同期トラバーサル非同期反復可能トラバーサル非同期反復生成非同期メソッドと非同期ジェネレーター非...
1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...
目次導入効果のデモンストレーションは次のとおりです。 MChat コンポーネントのレンダリング: I...
目次1. コンストラクタとプロトタイプ1. コンストラクター2. コンストラクタ問題3. コンストラ...
目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...
カリで再現まず、必要なvim.basicファイルにsuid権限を設定します。 chmod u+s /...
この記事の例では、WeChatアプレットの検索ボックス機能を実装するための具体的なコードを参考までに...