tombo2-progress’s diary

できるだけ毎日1時間を切り取ってここに晒す。誤字脱字気にしない。日本語が崩壊するのも気にしない。最終的にまとめて本ブログに書く

MQRのベンチマークについて考えてた

パフォーマンス計測・改善を繰り返している。

効果が大きいけど検討が必要な部分をどうするかが問題

pcapレベルの話としてスナップショットの長さを固定、queryが取れる程度にする

ether frame ~ tcpのpayload抜きで80byte前後、MySQL header (5byte) + クエリ文字数+1 byte(00)分を取れれば良い。 クエリの長さは本当にアプリ次第で、where hoge not in (****) みたいなのがあると一瞬で長くなる可能性がある。 max_allowed_packet以下には収まるとはいえ長すぎる。1024くらいにできれば1万QPSくらい出てもpacket lostがないんだけど、難しいだろうか、、、 現状デフォ1024でオプション指定で可変にしている。

redis側のsorted setやめる

コネクションごとのクエリの順序をできるだけ守るためにredis側でコネクションをkeyとしてsorted_setでクエリや実行時刻を持っているんだけど、observer側で投げる順序が入れ替わることはまずない気がするからlistにしてどんどん突っ込んだほうがパフォーマンス的に良い気がする。

ほかにも改善したいところが多いけど、期限的に結構厳しい、、、 prepared_statement対応も進捗悪いしどうしたものか