会社のウェブサイトのアクセス数が増えてくると(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 でよく使われるいくつかの文字列メソッドの概要 (初心者必読)
この効果は、2つのブラウザが互いにシミュレートしていることを示しています 1. シミュレートされたノ...
すべてのアニメーションの基本原理は、対応する画像を短時間で次々に表示し、視覚的に動いているように見せ...
多くの友人が、Docker でプロジェクトを実行する方法をずっと知りたがっていました。今日は、自分の...
Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...
目次1. 日付までのタイムスタンプ2. UTCを北京時間に変換するWXS (WeiXin Scrip...
目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...
目次条件付きコンパイルページレイアウト要約する条件付きコンパイル条件付きコンパイルでは、特別なコメン...
最近、hadoop テスト クラスターで spark ストリーミング プログラムを実行し、その後、n...
CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーショ...
目次1. 概要2. gdbデバッグ2.1. ブレークポイントを設定する2.1.1. ブレークポイント...
目次Vuex とは何ですか? Vuexの5つの特性vuex の State 機能とは何ですか? vu...
フォームのアクションは URL ジャンプとは異なります。フォームはバックグラウンドにデータを渡すこと...
序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...
この記事は、WeChat アプレットを使用して作成された簡単な計算機です。興味のある方はご覧ください...
この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...