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 でよく使われるいくつかの文字列メソッドの概要 (初心者必読)

推薦する

MySQLテーブルの内容の変更を監視し、MySQL binlogを有効にする

序文binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ...

VueのTodoListケースの詳しい説明

<テンプレート> <div id="ルート"> <...

DockerコンテナでLNMPをコンパイルする例

目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...

不規則な絵の滝の流れ原理の分析と応用

プロジェクトで発生した不規則な絵画壁のレイアウト問題は、次のように分析されます。 1.img dis...

Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習

目次Matlab セントロイドアルゴリズムMatlab はクローズドな商用ソフトウェアであり、米国政...

Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します

1. ツールディレクトリのファイル構造 [root@www tools]# ツリーツール/ ツール/...

IDEA を使用して Web プロジェクトを作成し、Tomcat に公開する方法

目次ウェブ開発1. Web開発の概要Tomcatのインストールと設定Tomcatをインストールする2...

Linux カーネルの探究: Kconfig の秘密

Linux 構成/ビルド システムがどのように機能するかを深く理解します。 Linux カーネル構成...

MySQLのExcelへのエクスポート方法の分析

この記事では、MySQL を使用してデータを Excel にエクスポートする方法について説明します。...

MySQLサービスを開くおよび閉じる2つの方法

方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...

VMware esxi6.5 のインストールと使用の詳細な手順

目次導入建築ESXIの利点vSphere とは何ですか? 2. 仮想マシンの利点3. 仮想マシンを使...

JavaScript オブジェクトを作成する 3 つの方法

目次1. オブジェクトリテラル2. newキーワードはオブジェクトを作成する3. Object.cr...

HTML の表の行と列を結合する問題の解決策の詳細な説明

私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...

Springboot アプリケーションを迅速にデプロイするために Docker とアイデアを統合する詳細なプロセス

目次1. はじめに2. 環境とツール3. Dockerをインストールし、リモート接続を構成する4. ...

Javascript のスコープとクロージャの詳細

目次1. 範囲2. スコープチェーン3. 語彙の範囲5. 閉鎖の適用6. クロージャの欠陥7. 閉会...