I.はじめに
今年はデータベースサーバーのOSをcentos6からcentos7にアップグレードする予定です。実際には、アップグレード前にパフォーマンスストレステストを実行します。この記事では、圧力テストの記録と結果を共有します。
sysbench-0.5を使用して、それぞれ500wのデータを持つ10個のテーブルを作成し、並列処理はそれぞれ12 24 36 48 60 72です。各同時ストレステストは4時間、合計24時間です。圧力テストコマンドは次のとおりです
/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run
注:sysbenchはローカルにインストールされ、ストレステストのためのネットワーク相互作用の時間損失はほとんどありません。
データベースのパフォーマンスをプレッシャーテストするため、今回は主にデータベースのパフォーマンスqps tps、host io、cpu、およびその他のパフォーマンスインジケーターを監視します。
sysbenchのoltpモードでは、挿入と削除の比率が同じであり、圧力テストの1秒あたりのtpsデータが同じであるため、これらがまとめられます。
Centos 7のcpu負荷はcentos6よりわずかに低く、io使用率はcentos6よりも高くなっています。
最初に記事を読むことをお勧めします[ホットな製品アップデートの最適化計画](https://mp.weixin.qq.com/s?__biz=MzI4NjExMDA4NQ==&mid=2648450906&idx=1&sn=597580c87ee626985da829367e5fd133&scene=21#wechat_redirect)
データベースの[データセキュリティ](https://cloud.tencent.com/solution/data_protection?from=10680)を向上させるために、MySQLはデータ配置の戦略を制御する2つのパラメータを設定します。現在の設定では、トランザクションが送信されるたびにディスクにデータを書き込みます。利点はデータセキュリティです。最も極端なケースでは、トランザクションが失われ、その悪影響により多数のIO操作が発生します。
もう1つのポイントは、データベースによる同じ行の更新の同時実行は、すでにロックを保持している他のセッションによってブロックされ、それが自身の参加によってデッドロックを引き起こすかどうかを判断する必要があることです。今回の複雑さは、1000の場合、O(n)です。リクエストごとに、各スレッドは他の999スレッドとデッドロックしているかどうかを確認する必要があります。他のスレッドが他のロックを保持していない場合、約50w回(計算方法999 + 998 + ... + 1)。この種のロックの待機とデッドロックの競合のチェックには、莫大な時間コストがかかります。
コア最適化パラメーター
sync_binlog=0--システムに渡してbinloginnodbをブラッシングします_flush_log_at_trx_commit=0--REDOバッファをディスクinnodbに毎秒フラッシュします_deadlock_detect=OFF --デッドロック検出innodbをオフにします_lock_wait_timeout=2
ストレステストシナリオ:
CREATE TABLE `seckill`(`id`int(11) DEFAULT NULL,`num`bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into seckill(id,num)values(1,200000000000000);
mysqlslap -uroot -h127.0.0.1-P 3316--concurrency=72--create-schema='test'--query='begin;update seckill set num=num-1 where id =1 and num>1;commit;'--number-of-queries=500000
メインのシミュレーションデータベースは同時実行性の高いシナリオにあり、同時実行数は72、96、144、192、256のアクティブセッションの同時実行に設定されています。
スパイクシナリオでは、centos 7のパフォーマンスは空に逆らっており、同じ条件下で、centos 6の3倍以上です。パラメータを調整した後、** centos 7の同時更新は1w以上**になる可能性があります。もちろん、実稼働環境の製品です。控除、複数のクエリがあり、挿入、更新、パフォーマンスが低下します。ただし、前年比では、パフォーマンスが大幅に向上します。
圧力テストの結果から、qpscentos7のパフォーマンスの向上は明らかです。 Qpsは20%〜40%増加しました。また、tpsで20%を超えるパフォーマンスの向上が見られます。実稼働環境でのパフォーマンスを楽しみにしています(複雑なビジネスSQLを使用すると、パフォーマンスの向上はsysbenchほど明白ではないと推定されます)。
新しいシステムをテストすることは非常に興味深いですが、Centos 7にはMySQLのパフォーマンスに影響を与える最適化がありますか?これのために尾を残して、次回それを分解してください。すでにcentos7またはredhat7を本番環境で使用している友人も、発生した問題やその他の運用および保守への影響を共有するためのメッセージを残すことができます。
最近、MGRの技術を学び始め、たまたまYeJinrong氏と元同僚のFengGuangpuに会い、「MySQLグループレプリケーションの詳細な理解」というコースを受講しました。
このコースは、基本、上級、実践の3つのモジュールに分かれており、基本原則、実装の詳細、実践的なガイダンスなどの側面からMGRのさまざまな知識ポイントを体系的かつ包括的に学習および習得します。また、MGRの特性と制限、適用可能なシナリオ、および競合についても紹介します。検出原理、フロー制御メカニズム、パフォーマンス最適化など。 **このコースは業界初であり、Zhishutangオンライン教室を通じてオンラインで学ぶことができます。 **元の価格は68元ですが、今すぐ登録して、最初の月の特別価格をわずか48元でお楽しみください。
Teach Fengは、大規模なeコマースデータベースの責任者であり、オンラインデータベースクラスターの安定した効率的な運用を保証し、データベース自動化運用および保守プラットフォームの構築を担当しています。彼は、オープンソースデータベーステクノロジの共有と交換に熱心です。
以下のQRコードをスキャンしてください
Recommended Posts