地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Cloud Operator Daysに動画登壇しました

Cloud Operator Days Tokyo 2022 に「信頼性を落とさず効果的にオンコールを減らす取り組みを目指して」というタイトルでオンコールの効率化について動画登壇させていただきました。 Cloud Operator Days Tokyoとは cloudopsdays.com クラウドの運用者に焦点…

生焼け肉は危ない

先々週くらいに自宅で生焼けの砂肝を食べたら腹痛で3日間くらいトイレから出れなくなった。生焼け肉食べて腹痛になるの毎年やってる気がするのだがこれ現代の技術を持ってすればなんとか防げるのでは?と思って調べてみた。が、特に解決索的なものはなかった…

MySQLのメタデータロックメモ

dev.mysql.com DDLとか打たないと意識しないメタデータのロック。metadata lockされているテーブルには、DDLから保護されるので、DDLが発行できなくなる。pt-oscとかをshow processlistとかでみるとWaiting for Table metadata lockになっている。この状態で…

エヴァ博行ってきた

eva-x-expo.exhibit.jp 出社に合わせて飲み会を2つ入れたらちょうどいい感じの空き時間ができたので行ってみた。最高アンド最高だった。プロダクト4000点超が集結していてコラボのバイクとか車とかやみたことないグッズが大量に置かれていたり面白かった。私…

【手元メモ】jqチートシート

ほしい要素だけ抜き出す jq '{name, description}' 指定した複数の要素をスペース区切りの文字列として出力する jq -r '"\(.id_str) \(.text)"' < file 文字列のエスケープを解除して出力する -rオプションを使う $ echo '{"key": "value\n\"aaaa\""}' | jq …

プライムデーで買ったもの

を振り返っていたが開催期間中に家で出たゴキブリが衝撃的過ぎてあまりものを買っていないことに気づいた。これまで無駄使いで不要なものまで買っていたがそれどころじゃないようなことが起きるとどうやら物欲は減るらしい。ちなみに出たゴキブリは1回見ただ…

GitHub Actionsでeb cliを使う

jobs: build: runs-on: ubuntu-latest env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-versio…

スピンロックの思い出(?)

社内勉強会でスピンロックという単語が出てきてずっと前にユーザー空間アプリケーションでスピンロックを使おうとしてレビューで反対されたというのを思い出した。その時はDBMSなんかが排他制御にpthread_mutexを使わず、独自にユーザー空間のspinlockを実装…

【MySQL】先頭のレコードより前、末尾のレコードより後

show engine innodb statusのロックモニターに出てくる用語。 最大下限レコード(infimum record) 最小上限レコード(supremum record) 先頭レコードよりも前にある疑似レコードと、末尾レコードより後にある疑似レコードを意味する。「先頭レコードより前…

eBPFでPIDを取得

BCCのツールで直接取得 data.e_pid = bpf_get_current_pid_tgid(); 上位32ビット TGID 下位32ビット PID の64ビットを返り値で渡してくれるヘルパー関数 BCCでtask_struct構造体から取得する struct task_struct *task; task = (struct task_struct *)bpf_ge…

【MySQL】ギャップロックはデッドロックをするかもしれない

InnoDB のギャップロックは、「単に抑制的」です。つまり、ほかのトランザクションによるギャップへの挿入が停止されるだけです。したがって、ギャップ X ロックの効果はギャップ S ロックと同じです。 dev.mysql.com タイトル通りそのまま。SELECT ~ FOR UP…

Composer

Composerとは PHPのライブラリ管理ツールです。 ライブラリAを使用するためには、別のライブラリBを先にインストールする必要がある、なんてことがあります。 この時、ライブラリAはライブラリBに依存している、と言います。 Composerを使用することで依存関…

【MySQL】consistent readとか

consistent read トランザクション内での (locking read ではない) 読み取りは、そのトランザクション中はじめに read した時点のスナップショットを参照するような挙動になる スナップショットは全テーブル対象 (クエリしたテーブルのみではない) スナップ…

ペパボに入って1年が経った

ryuichi1208.hateblo.jp っていう記事を書いて一年が経った。これまでの経験上自分は対数関数的な成長を遂げるようなことが多くてそろそろ鈍化しそうなもんだが携わってるサービスですらしょっちゅう知らないことが判明したり学びだらけの環境。innodbとか1…

【Linux】open済みのファイルのフラグを見る

/proc/${PID}/fdinfo/${fd} で見ることができる。flagsはopenに指定できるフラグの値が設定されている。posでファイルオフセットも取得できるのは何かに使えそう?となった。(ファイルを先頭から読み込んで何かをするプログラムで途中で刺さって動かないみた…

【Nginx】proxy_ignore_client_abortの効果を考えてみる

nginx.org proxy_ignore_client_abortはデフォルト値がOFFの設定でONにすると以下のような動きになる。 クライアントが応答を待たずに接続を閉じたときに、プロキシされたサーバとの接続を閉じるかどうかを決定します。 これは何が嬉しいかというとリバース…

【MySQL】非ユニークなカラムのロックは広いかもしれない

非ユニークインデックスの場合は、等価条件であっても範囲条件に近いロックを取るという話。空振ってなくても思ったよりロック広い??ってなるケースとかはこれの可能性がありそう。ユニーク制約の付いていないカラムには同値を入れることができるため、現…

【MySQL】テーブルロック

テーブルのロック状態を確認する方法 テーブルのロック状態を確認するには、innodb_lock_waitsを確認することでロックされている状態を取得できます。 SELECT * FROM sys.innodb_lock_waits; テーブルのロック テーブルをロックするには、LOCK TABLES文を使…

【MySQL】ロックモニターのロックの内容ごとのメモ

プライマリインデックスに対する等価検索、空振り lock_mode X locks gap before rec select * from t1 where id = 5 for update; ------------ TRANSACTIONS ------------ Trx id counter 1957 Purge done for trx's n:o < 1939 undo n:o < 0 state: runnin…

【MySQL】よく使うpt-query-digestのオプション

www.percona.com よく使うやつ --group-by fingerprintとかでまとめたいときに使う。 --order-by query_timeとかlock_timeとかrows_examinedの合計でソートしたりができる その他 出力形式が色々あってワンライナーとかCIとかと組み合わせてなにかできそうと…

【MySQL】MySQL 5.7でsysスキーマにロック状態確認ができるビューがあった

qiita.com あるトランザクションのロックが他のトランザクションのロック獲得を待たせているみたいなのを引くにはinformation_schemaのLOCK関係のテーブルをJOINしていく必要があると思っていたが上記の記事を見ていくとsysにもっと便利にみれるビューがある…

【MySQL】 InnoDB Checkpoint Ageの監視

writeされたデータがメモリ上に持ったままでよいサイズというのが innodb_log_file_size。そしてまだディスクにフラッシュされていないデータ(dirty page)のサイズが Checkpoint Age になる。innodb_log_file_sizeというサイズを増やすとこのサイズが増えて…

【MySQL】MySQLのwrite処理メモ

SQLをパーシングします 操作対象となるデータページ単位でメモリー上のBuffer Poolに呼び出し データに操作を行い、そのページがDirty Pageに Redo Logに操作と操作対象テーターなど情報を書く Redo Logをハードディスクに書き込む Dirty Pageを(ハードディ…

【MySQL】MySQLでIndexの一覧をだす

select table_schema,table_name,index_name,column_name,seq_in_index from information_schema.statistics;

寝室に作業スペースを作った

色々変えた。ケーブルどうしようってずっと悩んでる pic.twitter.com/qBT6ba3hAS— Ryuichi@Gurasan:|| (@ryuichi_1208) 2022年6月1日 念願だったスタンディングデスクを寝室に置いて寝室でも作業できるようにしてみた。仕事部屋と寝室とリビングで仕事できる…

buffer poolの用途などを調べるクエリ

SELECT page_type, COUNT(*) FROM information_schema.innodb_buffer_page GROUP BY 1;

pt-osc入門

github.com Percona社が公開しているRDBMSの運用のためのツールキットであるPercona Toolkitに含まれるツールのひとつ。Perlで書かれていて1万行くらいの大きめるCLIツール。処理の流れとかは以下の記事を参考に読んでみた。 developers.freee.co.jp スキー…

【MySQL】UNDOログとREDOログ

REDOログ 主にバックアップデータを最新のデータまで戻すために使われる。データベースが破損した時などに、データベースのリカバリしたりする UNDOログ 変更したデータを元に戻すために使われる。トランザクションをロールバックしたりする。

nginxが出してるnginxがブロッキング処理が苦手なことがわかりやすい図がめっちゃわかりやすかった。

これがめっちゃわかりやすかった。レジ打ち(ワーカー)がブロッキング処理を行うと倉庫まで荷物を取りに行って他のお客さんは処理が進まないよという意味。この辺の話って概念自体が難しかったりするがこういう喩えを使ってわかりやすく説明する技術がすごい…

EPOLLETでエッジトリガーとレベルトリガー

linuxjm.osdn.jp epoll イベント配送 (distribution) インターフェースは、 エッジトリガー (ET) としてもレベルトリガー (LT) としても動作させることができる。 と書いてあるがレベルトリガーとエッジトリガーをあまり意識して理解したことがなかったので…