ブックマーク / blog.shibayu36.org (12)

  • MySQLのREPEATABLE READとREAD COMMITTEDのロック状況をdata_locksから観察する - $shibayu36->blog;

    前回MySQLのREPEATABLE READとREAD COMMITTEDの違いを知るために色々試した - $shibayu36->blog;という記事を書いたところ、yoku0825さんにMySQL 8.0以降だとperformance_schema.data_locksが使えると教えてもらったので試した。 ちなみに、後ろからロックがぶつかるクエリを実行しなくても、MySQL 8.0だとSELECT * FROM performance_schema.data_locksでロックの範囲を確かめることができます。 ギャップつきロックがInnoDBのスタンダードで、X lockがレコードとギャップのロック、X not gapが単なるレコードロックになります— yoku0825 (@yoku0825) February 27, 2024 テーブル定義 CREATE TABLE `posts`

    MySQLのREPEATABLE READとREAD COMMITTEDのロック状況をdata_locksから観察する - $shibayu36->blog;
    tmatsuu
    tmatsuu 2024/03/10
    performance_schema.data_locks知らなかった。わいわい
  • Action Graphを使ってGoのpackageごとのビルド時間を可視化する - $shibayu36->blog;

    Goのパッケージごとのビルド時間を計測したいんだけど (どのパッケージのビルドに何秒かかってる、とか見たい) どうしたらいいのか、ちょっとググってみたけどランタイムにおけるパフォーマンス測定の話題ばっかり出てくる— うたがわきき (@utgwkk) February 26, 2024 前やったことあるがブログに書いてなかったのでメモしておく。 まずGoのビルド時間についてはAnalyzing Go Build Times | howardjohn's blogが非常に分かりやすく参考になる。この中でAction Graphというものに言及があり、これを使うことでパッケージごとのビルド時間を可視化できる。 例えば自分のgo_todo_appというものを使ってみる。 まずgo buildでactiongraph.jsonを吐き出し $ go build -debug-actiongraph=a

    Action Graphを使ってGoのpackageごとのビルド時間を可視化する - $shibayu36->blog;
    tmatsuu
    tmatsuu 2024/03/10
    へーactiongraph便利〜
  • git logの内容を検索する-Sと-Gの違い - $shibayu36->blog;

    ずっとgit logの内容を検索するときに-Sオプションを使っていたが、実は近いオプションに-Gオプションもあり、探したい内容によっては使い分けないとダメということを初めて知った... 詳しくはhttps://git-scm.com/docs/git-logの-Sと-Gのドキュメントを見てほしい。簡単にまとめると -Sは指定した文字列の出現回数が変わるdiffがあるcommitを検索する -Gは指定した正規表現がマッチする文字列がdiffにあるcommitを検索する ドキュメントの事例部分が結構わかりやすくて、以下のようなdiffがあった場合 + return frotz(nitfol, two->ptr, 1, 0); ... - hit = frotz(nitfol, mf2.ptr, 1, 0); -S frotzで検索をかけると、frontsの出現回数は変わってないのでマッチしない

    git logの内容を検索する-Sと-Gの違い - $shibayu36->blog;
    tmatsuu
    tmatsuu 2023/09/24
    -Sも-Gも知らなかった。便利そうだ。覚えておく
  • topにおけるCPUのsteal/niceは何か調べた - $shibayu36->blog;

    入門監視を読んだところ、CPUのstealやniceが何か分からなったため調べてみた。今回はそのメモを書いてみる。あまり自信はないので間違っていたら指摘してください。 steal リソース制御でサービスレベルを確保せよ:実践! Xenで実現するサーバ統合(5)(2/3 ページ) - @IT が参考になった。 steal列には、ゲストOSがリソース要求を行ったにもかかわらずCPUリソースを割り当ててもらえなかった時間の割合が表示されます。steal列に0%以外の値が表示されている場合はCPU利用率閾値設定が行われているか、ほかのゲストOSあるいはホストOSが同時にCPUリソースを要求して「取り合い」の状態になっていることが考えられます。特に閾値を設定していないにもかかわらずこのstealの値が高いようであれば、そのホストサーバは全体として過負荷になっているか、前述のCPUマッピング設定がアン

    topにおけるCPUのsteal/niceは何か調べた - $shibayu36->blog;
    tmatsuu
    tmatsuu 2019/04/28
    AWSのstealはホストの障害の可能性もあるけどインスタンスタイプの上限もどうやらありそうな気配。安価な選択肢として選ばれやすいm3.mediumはなんかすぐstealになるから避けてる。
  • エンジニアと1on1をするときの事前面談シートテンプレート - $shibayu36->blog;

    はてなのチーム横断のエンジニアメンター制度 - Hatena Developer Blog で紹介していますが、はてなにはチーム横断のエンジニアメンター制度があります。僕も最近までメンターとして5~6人ほどのメンティーを持っていました(今は事情があってメンターをやっていないのですが)。 メンターとして1on1をする時には1on1ミーティングに備えるアンケート - しるろぐを参考にし、事前にメンティーに面談シートを書いてきてもらうという工夫をしていました。その面談シートは改善を少しずつ加えながら運用していたのですが、一度知見共有も兼ねて最近使っていた面談シートテンプレートを公開してみようと思います。 面談シートテンプレート 以下のようなフォーマットで書いてもらっています。1on1の前にメンティーに1on1Google Docsに追記していってもらっています。1on1Google Docs

    エンジニアと1on1をするときの事前面談シートテンプレート - $shibayu36->blog;
    tmatsuu
    tmatsuu 2019/01/04
    良い。取り入れたい
  • PostgreSQLでSQLチューニングや障害状況調査に使ったクエリ達まとめ - $shibayu36->blog;

    最近PostgreSQLSQLチューニングや、DBが詰まった時の状況調査をいろいろやった。その時に便利だったクエリ達をまとめていく。PostgreSQLのバージョンは9.6系です。 SQLチューニングなどに便利だったクエリ達 それ以降に実行するSQLの実行時間を表示する。参考 https://morumoru00.wordpress.com/2011/05/08/postgresql-sql%E5%87%A6%E7%90%86%E6%99%82%E9%96%93%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%EF%BC%88timing/ \timing 実際にクエリを実行して実行計画や実行時間を表示する。クエリが実行されるので破壊的な操作も実行されてしまうことに注意。トランザクション張って最後にROLLBACKしましょう。参考 https://www.post

    PostgreSQLでSQLチューニングや障害状況調査に使ったクエリ達まとめ - $shibayu36->blog;
    tmatsuu
    tmatsuu 2018/04/14
    pg_stats知らなかったクソ便利。pg_stat_statementsはクエリーがサマリー化されて手動再実行が面倒くさかったりするので、postgresql版pt-query-digestが欲しい。
  • ioドメイン障害を理解するため、DNSの仕組みについて勉強した - $shibayu36->blog;

    先日、ioドメインの障害があったのだけど、自分がDNSの仕組みをよく分かっていないせいで、いまいちどういうことが起こっていたのか把握できなかった。そこで、DNSの仕組みについて軽く勉強したので、そのメモを残しておく。内容は間違っているかもしれないので、その場合は指摘してください。 DNSについて学んだこと Software Design 2015/4のDNSの教科書が非常に勉強になった。また、 インターネット10分講座:DNSキャッシュ - JPNICも参考になる。 権威サーバとフルリゾルバ まず、DNSサーバには権威サーバとフルリゾルバの二つの種類が存在する。 権威サーバ ドメインの情報を管理し、自分の管理しているゾーンの情報を提供するだけのサーバ 問い合わせたドメインが自分のゾーンの管理下ではない場合、別の権威サーバへ委任するという情報を返す コンテンツサーバとも言われる? 例) co

    ioドメイン障害を理解するため、DNSの仕組みについて勉強した - $shibayu36->blog;
    tmatsuu
    tmatsuu 2017/10/07
    良い
  • Macでdtrussを使ってシステムコールの実行時間を知る - $shibayu36->blog;

    最近lsofを使ってportの利用状況をチェックしようとしたら、なぜか数秒固まるということが起こり、drussを使ってどこで止まっているか確かめたのでメモ。 dtrussというのは、簡単にいえばstraceOSX版という感じ。どうやって使うかはOSXでもstraceしたい?よろしい、ならばdtrussだ - すがブロあたりをとりあえず見ると分かる。 ただ、単にdtrussを実行しただけだと、結局どこに時間がかかっていたのかよくわからなかった。manを見ていると、以下のようなオプションがあり、便利そうなので試してみた。 -e : それぞれのシステムコールの実行時間をmicrosecondsで出力する -d : コマンド開始からの実行時間をmicrosecondsで出力する とりあえず-eと-dオプション付きでlsofでどこに時間がかかっているか調べてみる。 $ sudo dtruss -e

    Macでdtrussを使ってシステムコールの実行時間を知る - $shibayu36->blog;
    tmatsuu
    tmatsuu 2016/09/02
    ほう
  • /etc/cron.d/以下にドットを含むファイルを配置しても無視される - $shibayu36->blog;

    先日、/etc/cron.d/にファイルを設定してるのに、何故かcronが起動してくれないという問題があった。その時は/etc/cron.d/crontab.develというファイルを配置していた。 何でかなーと思ってman cronしてたらこういう記述を見つけた As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conf

    /etc/cron.d/以下にドットを含むファイルを配置しても無視される - $shibayu36->blog;
    tmatsuu
    tmatsuu 2014/04/26
    うえー。なるほど、.dpkg-*対策か。rpm系だと.rpmnewとか.rpmsaveでは問題にならんのかな。
  • 社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;

    最近社内でCartonを使う機会が増えてきているのですが、そもそもCarton自体が何やってるかちゃんと把握できてなくてハマったりするので、社内有志でコードリーディング会を開催しています。今回は第一回のときに出てきに作ったメモを公開します。そのままメモを公開しただけなのでかなり雑です。間違ってることも多いと思います。 今回の目的 carton install周りで何が起こっているかざっと把握する 疑問とか snapshotが環境によってずれることがあるけどどうして? --deployment, --cachedとかがついた時に何が変わるか cachedしてもcpanにfallbackしてたけどなぜ インストール先の切替はどうするのか そもそもversion固定どうやってるか 順序は関係なくversionが固定されるのか cpanfileはperlスクリプトとして認識されるのか local以

    社内Cartonコードリーディング会第一回のメモ - $shibayu36->blog;
    tmatsuu
    tmatsuu 2014/04/06
    ISUCONでもCartonが使われてたけどよくわかってなかったので参考になる。ふむふむ。
  • Docker, Mesos, Sensu等を利用したBlue-Green Deploymentの仕組み - $shibayu36->blog;

    番環境のBlue-Green Deploymentの仕組みのプロトタイプを作っていた - $shibayu36->blog; 開発合宿でDockerとMesosを使っていい感じにリソース提供とデプロイするやつを作ってた - wtatsuruの技術方面のブログ Docker + Mesos + Marathon + Graphite + Fluentd + Sensuを組み合わせたデプロイ管理ツールの話 - ゆううきブログ この辺に書いたとおり、id:wtatsuru, id:y_uuki, id:hagihala と一緒に、DockerやMesosなどを利用してBlue-Green Deploymentのプロトタイプのようなものを作っていた。この前は非常にざっくりと書いただけだったので、もう少し中身に突っ込んで書いてみる。かなり長くなったので時間があるときにでもどうぞ。 デプロイや運用の

    Docker, Mesos, Sensu等を利用したBlue-Green Deploymentの仕組み - $shibayu36->blog;
    tmatsuu
    tmatsuu 2013/12/23
    素晴らしい。Test::mysqldやTest::TCPの部分の問題は確かにどうやるのがいいんだろう。バックエンドの接続先を設定ファイルだけで切り替えられるようにして逆Blue-Green Deploymentみたいな感じだろうか。
  • vagrantでCentOSのVMを立ちあげて、ネットワークが遅い時に試すこと - $shibayu36->blog;

    最近PrePANのcarton 1.0化を進めるため、vagrant、chef、knife、AWSなどにはまりまくっております。今回はその中でvagrantにchefを適用しようとしたら全く終わらなくて、それについて調べたことについて話します。 PrePANの開発環境でvagrantを使っていたりするのですが、そのVMに対してchefを適用してみたところ、固まってしまって動かない(厳密に言うとすこしずつしか動かない)という状態になりました。そこでいろいろ調べてみると、IPv6DNSの関係でネットワークの疎通が遅くなっていたという事がわかりました。 詳しくは Slow networking (due to IPv6?) on CentOS 6.x · Issue #1172 · hashicorp/vagrant · GitHub を見てもらうと分かると思いますが、IPv6で名前解決に行く

    vagrantでCentOSのVMを立ちあげて、ネットワークが遅い時に試すこと - $shibayu36->blog;
    tmatsuu
    tmatsuu 2013/08/15
    memo
  • 1