本から学ぶことは常に浅はかで、これがさらなるダウンタイムを引き起こすことには決して気づきません...私は自分の愚かなトラブルシューティングのプロセスを記録します。 先週、立ち上げたばかりのシステムで、再度ログインできないという報告が出始めました。このシステムでは最近この問題が発生しており、開発者もその問題を探していたため、私たちはあまり注意を払っていませんでした。そこで、オペレーティング システムにログインし、mysql -uroot -p を使用してデータベースにログインしましたが、何も起こらず、ログインできませんでした... 説明すると、MySQL は mysql ユーザーの下にインストールされます。データベース パラメータはインストール中に調整されますが、オペレーティング システム レベルでは調整は行われません。したがって、mysql ユーザーのオープン ファイルの最大数はデフォルトの 1024 に制限されており、ulimit -n を使用して照会できます。その後、mysql の root アカウントでデータベースにログインした状態で、mysql の system ユーザーでもログインし、そのときのサーバー負荷を確認しました。CPU やメモリなどは正常でしたが、データベースに接続しているアプリケーションが多数存在していました。 この時点で問題は明らかです。システム ユーザーが開いた mysql ファイルの数が最大制限に達した可能性があり、当然、これ以上の接続を開くことはできません。 しかし、当時はこれに思い至りませんでした。私が考えたのは、ログインするシステムユーザーを変更するのではなく、アプリケーションを停止するのではなく、データベースを再起動することでした。 。 。さらに、このデータベースは、どれも重要なビジネスではないものの、1 つのビジネスだけではなく複数のビジネスを運営しています。 。 。 そこで、mysql ユーザーで mysqladmin -uroot -p shut down を実行し、データベースを再起動する準備をしました。これは間違いなく応答しないでしょう。理由は、以前のルートアカウントがデータベースに接続できないのと同じです。Ctrl + Cの後、次のエラーが報告されます ^Cmysqladmin: 'localhost' のサーバーへの接続に失敗しました エラー: 「初期通信パケットを待機中」で MySQL サーバーへの接続が失われました。システム エラー: 4 その後、データが失われるかもしれないと思ったにもかかわらず、さらに愚かなことをして、mysql プロセスを強制終了しました。 。 。その後、mysql を再起動すると、システムが利用可能になります。それは本当に愚かなことでした。それを終えた後、すぐに、もっと良い対処法がたくさんあることを思い出しましたが、私は最も愚かな方法を選択しました。 今日、データベースに再度ログインしたところ、max_connections、table_open_cache など、いくつかのパラメータが設定ファイルに書き込んだものと異なっており、すべてデフォルト値に設定されていました。最後の起動ログを確認したところ、確かに警告がありました。 2019-03-15T08:14:03.038750Z 0 [警告] 制限が変更されました: max_open_files: 1024 (要求数 12010) 2019-03-15T08:14:03.038911Z 0 [警告] 制限が変更されました: max_connections: 214 (要求数 2000) 2019-03-15T08:14:03.038916Z 0 [警告] 制限が変更されました: table_open_cache: 400 (要求 5000) 明らかに、mysql はパラメータ設定に基づいてインスタンスが開く必要があるファイルの最大数を計算しましたが、これは現在のシステムユーザーの最大制限を超えているため、パラメータは使用されず、デフォルト値が使用されます。もちろん、起動後もデータベースは利用可能であり、起動後にパラメータを手動で設定することもできます。 グローバルmax_connections=2000を設定します。 グローバルtable_open_cacheを5000に設定します。 ただし、以前遭遇した問題が発生する可能性があります。つまり、データベース接続数が max_connections 制限に達しず、ユーザーは依然として接続できません。通常の状況では、接続数がいっぱいになった場合でも、MySQL は root ユーザー用の接続を予約するため、root ユーザーはデータベースにログインして問題を確認できることに注意してください。 解決策も非常に簡単です。オペレーティング システム ユーザー mysql の制限値を増やし、構成ファイル /etc/security/limits.conf の後に新しい制限値を追加するだけです。 mysql ソフト nofile 32768 mysql ハード nofile 65535 上記は、私がご紹介したMySQLシステムユーザーのオープンファイルの最大数についての詳細な説明です。お役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Ubuntu 19でdockerソースをインストールできない問題を共有する
目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...
ローカル開発では、直接アクセスできない静的ファイル リソースのデバッグが必要になる場合があります。こ...
目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...
目次1. 基本概念の紹介2. ネットワークIOの読み取りと書き込みのプロセス3. 5つのLinuxネ...
基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...
1. まず、自分のdockerhubアカウントを登録します。登録アドレス: https://hub....
1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...
序文ますます便利になった今日のインターネット社会では、さまざまなインターネット ランサムウェア ウイ...
目次まとめ問題の説明問題を分析する問題を解決するまとめ複雑な知識をシンプルに説明できることは重要です...
まず、ブロガーはコミュニティ バージョンをプレイしていますが、学習とテストにはこれで十分です。 Bl...
仕事のプロジェクトのニーズにより、曲の再生が必要となり、さまざまな資料を参考にして、NetEase ...
目次チュートリアルシリーズ1. yumパッケージマネージャーを使用してMariaDBサーバーをインス...
今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...
タイトル通りです!一般的に使用される font-family はブラウザの組み込みフォントを読み込み...
最初のもの: 1. 主要なヘッダーファイルを追加します。 #include <linux/of...