MySQL / Web サーバーのボトルネック

MySQL / Web サーバーのボトルネック

MySQL / Web サーバーのボトルネックを特定しようとしています。

私は 3 台のサーバーを持っています。Nginx を実行する Web サーバー、Wordpress DB を備えたリモート MySQL サーバー、そしてデータを保存する別のリモート MySQL サーバーです。

私が見つけようとしているボトルネックは、データを保存している 2 番目の MySQL サーバーと Web サーバーの間にあります。3 つの DataTables (3 つの個別のクエリ) があるページがあります。すべてを実行すると、読み込みが非常に遅くなります。ゲートウェイのタイムアウト エラーが発生することもあります。

クエリ自体が問題だとは思いません。DataGrip では、3 つとも平均 200 ~ 500 ミリ秒です。プラグインはインデックスを利用できないと聞いているため、現在クエリはインデックス化されていませんが、とにかく試してみるかもしれません。

ハードウェアとセットアップ:

私の MySQL サーバーは AWS R6G.Large、2 コア、16 GB RAM、150 IOPS の SSD、128 MB スループットです。innodb_page_size は 32、buffer_pool_size は 11000M、innodb_buffer_pool_instances は 10、innodb_log_file_size は 1G です。Web サーバーは AWS C6G.Xlarge、4 コア、8 GB RAM、150 IOPS の SSD、128 MB スループットです。FPM と Opcache を使用します。

両方のサーバーで TOP を使用して監視を試みましたが、正直なところ、情報を適切に活用するための知識があるかどうかわかりません。

何らかの方法で、それがハードウェアなのかソフトウェアなのかを判断したいのですが、ハードウェアである場合、切り分ける方法はありますか? 実際にそれが問題である場合、ハードウェアを増やすことに何の問題もありません。

Stack / ServerFault でこれが許可されているかどうかはわかりませんが、両方のサーバーで TOP を実行して画面を録画すると、何が起こっているのかが簡単にわかると思います。公開 Google Drive にビデオを追加しました。ビデオには、MySQL サーバー (上部) と Web サーバー (下部の Nginx) の両方が含まれています。私が行ったことは、ページをロードし (ビデオの 3 秒のマーク)、結果を録画することでした。ビデオの時間は 1:05 で、最後のテーブルが表示されるまでにかかった時間です。ビデオは、サイトがメンテナンス中だったときに録画されたため、他の IP / トラフィックはどちらのサーバーにも到達できませんでした。

私の Google ドライブ リンク:

https://drive.google.com/drive/folders/1NtdE1Z4875i1Xx2Wy2EXGgknt9yuY1IN?usp=sharing

誰かが助けてくれるといいですね。

エイミー

関連情報