今日、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つのストレージエンジンについて簡単に説明します。
今日は、Docker イメージ、各レイヤーの内容を調べ、Docker/OCI イメージのサイズを縮小...
1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか?実際、表現方法はいろいろありま...
マスタースレーブ同期 (マスタースレーブレプリケーションとも呼ばれる) は、マスタースレーブデータの...
目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...
Windows Server 2008 サーバーが自動的に再起動します。サーバーにログインした後、ど...
目次1. letキーワード1.1 基本的な使い方1.2 変動昇進はない1.3 一時的なデッドゾーン1...
マウスを動かしたときにDIVが消えるように手ぶれ補正を使用するdiv タグ自体は onblur イベ...
設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...
1. IPアドレスを設定する前に、まずifconfigを使用してネットワークカード情報を表示し、ネッ...
目次mysqldの起動方法方法 1: mysqld方法 2: mysqld_safe方法3: mys...
場合によっては、フォーム内のテキスト ボックスを読み取り専用にして、ユーザーがその中の情報を変更でき...
今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...
目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...
序文まず、TCP 接続を識別する方法を見てみましょう。システムは、(src_ip、src_port、...
方法1: lsofコマンドを使用するlsof コマンドを使用して、ポートが開いているかどうかを確認で...