今日、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つのストレージエンジンについて簡単に説明します。
序文スロー クエリ ログは、MySQL で非常に重要な機能です。MySQL のスロー クエリ ログ機...
目次1. 数学関数2. 文字列関数3. 日付関数4. 暗号化機能主な MySQL 関数は次のように紹...
この記事では、MySQL 8.0.15の詳細なインストールと使用方法のチュートリアルを参考までに紹介...
時には、Web ページに掲載されているコンテンツが悪意のある人物に盗用されるのを望まないため、Web...
コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...
これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...
この記事では、参考までにMySQL 5.7.18 MSIインストールチュートリアルを紹介します。具体...
目次元に戻すログUNDOログの生成と破棄UNDOログの保存元に戻すログ機能トランザクションの原子性の...
インストール時間を節約するために、公式の mysql docker イメージを使用して mysql ...
CentOS 7 では、次のようなコマンドを使用してホスト ポートをコンテナー ポートにマッピングす...
MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...
序文MySQL クエリは select コマンドを使用し、limit および offset パラメー...
目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...
このドキュメントの目的はreact-diagramフレームワーク モデルの Json シリアル化を説...
シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...