tombo2-progress’s diary

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

2018-09-01から1ヶ月間の記事一覧

MQRのpprofとってみた

sysbenchで適当な負荷をかけてMQRのpprof, general_log, slow_log, tcpdumpをとってみた pprofの結果 (pprof) peek main ----------------------------------------------------------+------------- [16/90] flat flat% sum% cum cum% calls calls% + conte…

評価軸を考える

最終的に何を目指すか考えてみる クエリが再現できること 5.1以上でgeneral_logと比較して、全く同じクエリが取れることgeneral_logと同じ順序じゃなくて良い QPSが同等になること 実際のQPSを再現できること このツール自体がボトルネックにならないこと 2…

gopacketで取ったパケットを高速に処理したい

無限にgoroutine作られても困るので、goroutineの数を制御する Go言語でCPU数に応じて並列処理数を制限する | SOTA tcpdumpみたいにバッファリングしてくれないか。。。 FastHash()使うとload balancingできそう gopacket - GoDoc

MySQL server宛てのパケットからクエリをとる

connection poolingでコネクションが切れない状況でCOM_QUERYを取るのはステートを持ってパケットをパースする必用があるかと思ったけど、sequence_idはクエリごとにリセットされるようなので、sequence_id=0のものでcommand_typeがクエリのものを取れば良さ…

mysql, yumとかaptで入れられたのを確認する方法ないか

systemctlのserviceの場所 /usr/lib/systemd/ /etc/systemd/ /lib/systemd https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html

dimStat, AWSで構築すると何故かhostが発見できない問題(pingは通る, MySQLへはつながる)が発生していて辛い。 ローカルのPCでやってもMySQLの情報だけ取れなかったりして、どうもおかしいくてつまってる

dimStatためしてる

本家の方の更新が滞りまくっているので、そちらに書く。

やはりステートレスは厳しい

com_queryやcom_stmt_prepaereくらいが取れればよいなら別として、deserializerとしてパケットを取ろうとするならステートレスにやるのは無理な気がする。 com_query_responseで結果セットのカラム数がcommand_typeが入るはずの5byte目に入ってきてしまうこ…

document合わない

MySQL :: MySQL Internals Manual :: 14.7.6 COM_STMT_EXECUTE のNULL-bitmap, length: (num-params+7)/8 の計算が合わないnum-params+7/8すると0になるしその後のtype of each parameter, length: num-params * 2 もこういうルールではないと思う

MySQLパケットが途切れる原因

MySQLのパケットが途切れる問題が合って、後続のパケットを見ても途切れたクエリの続きが入ってこなくて困っていた。 結論、tcpdumpの-sオプション(snapshotのサイズ)がCentos5.xでは96byteらしくこれが原因で切れていた。 なので、-s 0を追加してパケットが…