「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL チューニングが Laravel のパフォーマンスを向上させる方法

MySQL チューニングが Laravel のパフォーマンスを向上させる方法

2024 年 7 月 30 日に公開
ブラウズ:956

MySQL 構成のチューニングは、データベースの専門家や管理者によって実装されるデータベース管理の重要なコンポーネントです。ハードウェアとワークロードに合わせてデータベースを構成することを目的としています。しかし、データベース管理の領域を超えて、MySQL 構成チューニングの有用性はほとんど無視されています。

MySQL のチューニングは Web アプリのパフォーマンスに大きな影響を与える可能性があるという仮説を立てています。 MySQL チューニングの価値を示すことができれば、企業や組織はこの実践をより大規模に取り入れたいと考えるようになるかもしれません。

Laravelアプリケーションのパフォーマンスを向上させる方法

チューニングによるアプリケーションのパフォーマンスの向上は、次の領域に対処する包括的なアプローチによって最も効果的に達成されます。

  • サーバー リソース – CPU、メモリ、ストレージ
  • ソフトウェア構成 – Linux、Nginx、Php…
  • データベース管理システム (DBMS) 構成 – MySQL、PostgreSQL
  • データベース スキームの最適化とインデックスの変更
  • アプリケーションの最適化 – コード、クエリ、アーキテクチャ…

経験豊富な開発者の多くは、データベースのパフォーマンス チューニングをアプリのパフォーマンスを向上させる機会として捉えていません。これは、この分野についてほとんど知識がないためです。彼らはコードベースの最適化に多くの時間を費やしていますが、投資した時間とエネルギーに見合った価値のある結果が得られなくなる点に達します。 MySQL のチューニングが人気のオープンソース Web アプリケーションのパフォーマンスにどのようなプラスの影響を与えるかに関する私たちの研究は、この事実を開発者に示すことを目的としています。

テストのアプローチ

Laravel Aimeos のテスト手順では、シードされたデータを使用して構成の前後でアプリのパフォーマンスを比較できます。最初にデフォルト構成でテストを実行することで、調整された構成と比較するための貴重な制御結果が得られます。

次のプロセスを使用して各アプリケーションを準備し、テストしました:

  1. Laravel Aimeos をデプロイします。
  2. データを含むシード データベース。
  3. JMeter のテストを準備します。
  4. テストを 10 分間実行 – Blazemeter パフォーマンス テスト プラットフォームを使用して JMeter テストを実行しました。
  5. MariaDB 構成の調整 – デフォルト構成のテスト後、セットアップは同じままでしたが、MariaDB はワークロード、サーバー リソース、データベース サイズに合わせて調整されました。
  6. テストの再実行 – 調整された構成に対して Blazemeter を使用して JMeter テストを繰り返しました。

テスト中の JMeter テスト、MySQL ステータス、および MySQL 変数を Github で公開しました。

どのような指標を調べたのでしょうか?

この調査中に調査した指標は次のとおりです:

  1. 応答時間 (レイテンシー) は、リクエストの送信からサーバー側での処理まで、クライアントが最初のバイトを受信するまでの時間です。これは、サーバーのパフォーマンスを把握するための重要な指標です。
  2. 1 秒あたりのクエリ数 は、データベース サーバーが 1 秒あたりに実行するクエリの数を測定するメトリックです。
  3. CPU 使用率.

ワークロードを比較するために、CPU 使用率1 秒あたりのクエリ数 の指標を収集しました。

ララベル・アイメオス

Aimeos Laravel は、オンライン ショップ、マーケットプレイス、B2B アプリを作成するための人気のある e コマース Web アプリ フレームワークです。 Aimeos を使用すると、ユーザーは 10 億を超えるアイテムをサポートするように拡張できる Laravel 用の API ファーストの e コマース ショップを作成できます。 30 以上の言語で利用でき、インストール数は 300,000 を超えています。

テストのセットアップ

Aimeos をテストするために、10 人のユーザーでテストを開始しましたが、デフォルトの構成ではテストを完了できなかったため、ユーザーの数を減らす必要がありました。

データベースに 500 MB のデータをシードしました。
テスト時間は 10 分でした。

使用したもの:

  • オペレーティング システムとして Debian 11 がインストールされている AWS EC2 インスタンス c5.xlarge、
  • Web サーバーとしての Apache、
  • MariaDB 10.5 はデータベース サイズ 500 MB のデフォルト構成に設定されています。

MySQL の構成

Aimeos Laravel で使用される構成は次のとおりです:

Laravel Aimeos 500Mb 用に調整された構成

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2

テスト結果

Aimeos Laravel のテスト結果では、デフォルト構成と調整された構成の間でパフォーマンスが大幅に向上していることがわかりました。

MySQL の最適化により、平均サーバーの応答時間が大幅に向上し、1.4 秒から 800 ミリ秒未満に短縮されました。

応答時間 (レイテンシー) は 42% 減少し、平均 CPU 使用率 は 86% 減少しました。一方、 1 秒あたりのクエリ数 は、以前と比べて 291% という驚異的な増加を示しました。 1 秒あたり 12 ~ 35 クエリ。

結果のグラフは以下でご覧いただけます:

How MySQL Tuning Improves the Laravel Performance 応答時間 (ミリ秒)、Aimeo で調整された MySQL 構成とデフォルトの比較
How MySQL Tuning Improves the Laravel Performance CPU 使用率 (%)、Aimeo で調整された MySQL 構成とデフォルトの比較
How MySQL Tuning Improves the Laravel Performance 1 秒あたりのクエリ数、Aimeo が調整した MySQL 構成とデフォルトの比較

コミュニティの貢献者

私たちは、Laravel 開発者である Initlab 社の Gevorg Mkrtchyan 氏と Sergey Sinitsa 氏と協力して、この一連の疑問を調査しました。彼らの専門知識に非常に感謝しています。
Sergey は Aimeos をデプロイし、Gevorg はデータベースをシードするためのコードを準備しました。

結論

Aimeos Laravel を使用したテスト手順では、データベース構成後の 応答時間 (レイテンシー)CPU 使用率、および 1 秒あたりのクエリ数が大幅に改善されました。サーバー構成。

応答時間 (レイテンシー)は 42% の間で低下し、CPU 使用率 は 86% 低下しました。 Aimeos Laravel 500MB では、1 秒あたりのクエリ数が 291% 増加しました。

結論として、MySQL チューニングはデータベース管理の重要な側面であり、Laravel アプリケーションのパフォーマンスに大きな影響を与える可能性があります。 Web アプリケーションのパフォーマンスが低いと、ページの読み込み時間が長くなり、リクエスト処理が遅くなり、ユーザー エクスペリエンスが低下する可能性があり、SEO や販売に悪影響を与える可能性があります。 MySQL チューニングで Web アプリのパフォーマンスを最適化することで、企業や組織は売上、ページビュー、コンバージョン率、SEO ランキングを向上させることができます。

この調査により、Laravel アプリケーションのパフォーマンスを向上させる手段として MySQL チューニングの価値を示し、Laravel 開発者がアプリのパフォーマンスを最適化する際にこの実践を考慮するよう奨励したいと考えています。

Releem などのツールを使用すると、データベースが最適なパフォーマンスになるように自動的に構成され、ソフトウェア開発チームの負担が軽減されます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/drupaladmin/how-mysql-tuning-improves-the-laravel-performance-282j?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3