MySQL 4G メモリ サーバー構成の最適化

MySQL 4G メモリ サーバー構成の最適化

会社のウェブサイトのアクセス数が増えてくると(1日10万PV以上)、当然MySQLがボトルネックになります。MySQLの最適化に関して、最も基本的なことはMySQLのシステムパラメータの最適化です。

MySQL は Web アーキテクチャのパフォーマンスに最も大きな影響を与え、重要なコア部分でもあります。 MySQL 設定が適切に最適化されているかどうかは、Web の速度と伝送容量に直接影響します。同時に、MySQL は最適化が最も難しい部分でもあります。MySQL の専門知識が必要なだけでなく、長期的な観察と統計、経験に基づく判断、そして合理的なパラメータの設定も必要です。 次に、MySQL の最適化の基本と、MySQL 自体 (my.cnf) の最適化について見てみましょう。

パフォーマンスに大きな影響を与えるいくつかのパラメータを紹介します。 my.cnf ファイルの最適化設定はサーバーのハードウェア構成と密接に関連しているため、一般的な 2U サーバーのハードウェア環境を指定します: CPU: 2 Intel Xeon 2.4GHz、メモリ: 4GB DDR、ハード ディスク: SCSI。

次に、上記のハードウェア構成と最適化された my.cnf に基づいて説明します。

[mysqld] 
 ポート = 3306 
 サーバーID = 1 
 ソケット = /tmp/mysql.sock 
 スキップロック 
#MySQL の外部ロックを回避し、エラーの可能性を減らし、安定性を高めます。 
名前解決をスキップ 
#MySQL が外部接続で DNS 解決を実行しないようにします。このオプションを使用すると、MySQL が DNS 解決を実行するのにかかる時間を削減できます。ただし、このオプションをオンにすると、すべてのリモート ホスト接続認​​証に IP アドレス方式を使用する必要があることに注意してください。そうしないと、MySQL は接続要求を正常に処理できなくなります。
バックログ = 384 
#back_log パラメータの値は、MySQL が一時的に新しいリクエストへの応答を停止するまでに、短期間でスタックに保存できるリクエストの数を示します。 システムが短期間に多数の接続を行う場合は、着信 TCP/IP 接続のリスニング キューのサイズを指定するこのパラメータの値を増やす必要があります。オペレーティング システムによって、このキュー サイズに対する制限が異なります。 back_log をオペレーティング システムの制限よりも高く設定しても効果はありません。デフォルト値は 50 です。 Linux システムの場合、このパラメータを 512 未満の整数に設定することをお勧めします。
キーバッファサイズ = 256M 
#key_buffer_size は、インデックス作成に使用されるバッファ サイズを指定します。この値を増やすと、インデックス処理のパフォーマンスが向上します。メモリが約 4GB のサーバーの場合、このパラメータは 256M または 384M に設定できます。注意: このパラメータ値を高く設定しすぎると、サーバーの全体的な効率が低下します。
最大許容パケット = 4M 
 スレッドスタック = 256K 
 テーブルキャッシュ = 128K 
 ソートバッファサイズ = 6M 
#ソート時に使用できるバッファ サイズを照会します。注意: このパラメータに対応する割り当てメモリは、各接続専用です。接続が 100 個ある場合、実際に割り当てられるソート バッファの合計サイズは 100 × 6 = 600 MB です。したがって、メモリが約 4GB のサーバーの場合、推奨設定は 6 ~ 8M です。
読み取りバッファサイズ = 4M 
#読み取りクエリ操作に使用できるバッファ サイズ。 sort_buffer_size と同様に、このパラメータに対応する割り当てメモリも各接続に排他的です。
結合バッファサイズ = 8M 
# 共同クエリ操作に使用できるバッファ サイズ。sort_buffer_size と同様に、このパラメータに対応する割り当てメモリも各接続専用です。
myisam_sort_buffer_size = 64M 
 テーブルキャッシュ = 512 
 スレッドキャッシュサイズ = 64 
 クエリキャッシュサイズ = 64M 
#MySQL クエリ バッファのサイズを指定します。 MySQL コンソールで、Qcache_lowmem_prunes の値が非常に大きい場合は、バッファが不足していることが多いことを示し、Qcache_hits の値が非常に大きい場合は、クエリ バッファが非常に頻繁に使用されていることを示します。値が小さい場合は、効率に影響します。この場合、クエリ バッファを使用しないことを検討できます。Qcache_free_blocks の値が非常に大きい場合は、バッファ内にフラグメントが多数あることを示します。
tmp_table_size = 256M 
 最大接続数 = 768 
#MySQL で許可される接続プロセスの最大数を指定します。フォーラムにアクセスするときに「接続が多すぎます」というエラー メッセージが頻繁に表示される場合は、このパラメータの値を増やす必要があります。
最大接続エラー数 = 10000000 
 待機タイムアウト = 10 
#リクエストの最大接続時間を指定します。メモリが約 4GB のサーバーの場合、5 ~ 10 に設定できます。 
スレッド同時実行性 = 8 
#このパラメータの値は、サーバー上の論理CPUの数*2です。この例では、サーバーには2つの物理CPUがあり、各物理CPUはHTハイパースレッディングをサポートしているため、実際の値は4*2=8です。
 スキップネットワーキング 
#このオプションを有効にすると、MySQL の TCP/IP 接続モードが完全にシャットダウンされます。WEB サーバーがリモート接続経由で MySQL データベース サーバーにアクセスする場合は、このオプションを有効にしないでください。そうしないと接続が機能しません。
テーブルキャッシュ=1024 
#物理メモリが大きいほど、設定も大きくなります。デフォルトは 2402 で、最適な設定は 512-1024 です。innodb_additional_mem_pool_size=4M 
#デフォルトは2M 
 innodb_flush_log_at_trx_commit=1 
# 0 に設定すると、innodb_log_buffer_size キューがいっぱいになるまで待機してから、すべてをまとめて保存します。デフォルト値は 1 です。 
 innodb_log_buffer_size=2M 
#デフォルトは1M 
 innodb_thread_concurrency=8 
#サーバーの CPU の数に設定します。デフォルト値は通常 8 です。 
 キーバッファサイズ=256M 
#デフォルトは218ですが、最適な場合は128に調整してください tmp_table_size=64M 
#デフォルトは16Mですが、最適な値にするには64~256に調整してください。read_buffer_size=4M 
#デフォルトは64K 
 読み取りバッファサイズ=16M 
#デフォルトは256K 
 ソートバッファサイズ=32M 
#デフォルトは256K 
 スレッドキャッシュサイズ=120 
#デフォルトは60 
 クエリキャッシュサイズ=32M

知らせ:

1. Key_reads が大きすぎる場合は、my.cnf の Key_buffer_size を増やして、Key_reads/Key_read_requests を少なくとも 1/100 に保つ必要があります。小さいほど良いです。

2. Qcache_lowmem_prunes が大きい場合は、Query_cache_size の値を増やします。

要約する

上記は、編集者が紹介したMySQL 4Gメモリサーバー構成の最適化です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL メモリテーブルと一時テーブルの使用方法の詳細な説明
  • MySQL 8.0 のメモリ関連パラメータの概要
  • MySQL OOM (メモリオーバーフロー) の解決策
  • MySql でメモリ使用量を削減する方法の詳細な説明
  • MySQLのメモリ使用量を表示する方法の詳細な説明
  • MySql 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ
  • MySQLの一般的なメモリ不足による起動失敗に対する完璧な解決策
  • MySQL のメモリ使用量と CPU 使用率が高い場合のテストと解決策
  • MySQL 5.6 の起動時にメモリ使用量が高くなる問題の解決方法
  • MySQL 8.0 のメモリ消費の詳細な分析

<<:  Raspberry PiにDockerをインストールする方法

>>:  JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)

推薦する

VueはWebSocketを使用してチャット機能をシミュレートします

この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...

CSSを使用して画像フレームアニメーションと曲線の動きを実装する

すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...

アイデアを通じてプロジェクトをDockerにパッケージ化する方法

多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

WeChat アプレット wxs 日付と時刻処理の実装例

目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

VUE ユニアプリの条件付きコーディングとページレイアウトに関する簡単な説明

目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...

Linux で nohup ログ出力が大きすぎる問題の解決方法の詳細な説明

最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、n...

CSSアニメーションがJSによってブロックされるかどうかについての簡単な議論

CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーショ...

LinuxデバッガGDBの基本的な使い方の詳細な説明

目次1. 概要2. gdbデバッグ2.1. ブレークポイントを設定する2.1.1. ブレークポイント...

Vuexの特性と機能の詳細な説明

目次Vuex とは何ですか? Vuexの5つの特性vuex の State 機能とは何ですか? vu...

HTML フォーム送信アクションと URL ジャンプアクションの違い

フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...

crontab スケジュールされたタスクが実行されない理由の分析と解決

序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...

WeChatアプレットで計算機機能を実装する

この記事は、WeChat アプレットを使用して作成された簡単な計算機です。興味のある方はご覧ください...

JavaScript による省・市連携効果の実現

この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...