会社のウェブサイトのアクセス数が増えてくると(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 ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
<<: Raspberry PiにDockerをインストールする方法
>>: JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)
最近、機能拡張の要件を受け取りました。ただし、新しい要件で参照されているデータインターフェイスは、X...
目次初期作成方法ファクトリーパターンコンストラクターパターンコンストラクタパターンの最適化プロトタイ...
プロジェクトでは、現在地の緯度経度を取得したり、場所を検索して緯度経度情報を取得したりする必要があり...
この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...
よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...
Linux で Ctrl+c、Ctrl+d、Ctrl+z はどういう意味ですか? Ctrl+c と ...
目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...
1 インストールリソースパッケージmysql-8.0.18-1.el7.x86_64.rpm-bun...
この記事では、例を使用して、replace と regexp を使用して MySQL で正規表現を置...
目次序文1. グローバル統合オーバーライドを使用する2. .vueファイルを変更する3. コンポーネ...
目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...
目次1. Gojsの実装1. 描画2. 破線の実装3. 点線を動かす2. 点線と点線アニメーションの...
MySql ダウンロード1. 公式サイトを開き、ダウンロード パスを見つけます。ダウンロード アドレ...
MySQL データ型における DECIMAL の使用法の詳細な説明MySQL のデータ型には、INT...
目次概要バーチャルドム原理実装プロセスパッチ方式sameVnode関数patchVnode関数upd...