会社のウェブサイトのアクセス数が増えてくると(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 でよく使われるいくつかの文字列メソッドの概要 (初心者必読)
目次1. 共有共通モジュール2. 共有マテリアルモジュール3. 共有確認ダイアログ1. 共有共通モジ...
RedHat6.5インストールMySQL5.7チュートリアル共有、参考までに、具体的な内容は次のとお...
ステートメント 1: <link rel="shortcut icon" ...
フィルター属性は要素の視覚効果を定義しますぼかし画像にガウスぼかしを適用します。 「半径」の値は、ガ...
目次1. はじめに2. 実装3. HTML ドラッグ アンド ドロップ API を使用しないのはなぜ...
スプレッド演算子を使用すると、式をある時点で展開できます。スプレッド演算子は、複数のパラメーター (...
目次1. Dockerはリモートアクセスを可能にする2. Intellij IDEAにDockerプ...
join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...
導入react-i18next は、 i18nextをベースにした強力な国際化フレームワークです。 ...
ウェブサイトをデザインするにはインスピレーションが必要です。良いインスピレーションを得るには、より多...
ブログの正式名称は「Web log」で、中国語で「ネットワークログ」を意味します。後にブログに短縮さ...
仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...
1. はじめに画像は多くのスペースを占め、画像の数が増えるほど管理が難しくなるため、シンプルなラベル...
注: nginxはbrew経由でインストールされますウェブサイトのルートディレクトリ: /opt/h...
Linux での ssh サービス構成など、ssh サーバー構成に関する記事は多数あります。ここでは...