php を GDB でデバッグするのが便利。 以下のエントリで手法が説明されている
以降、私が書くのはこれらのエントリに書かれている手順を真似たものなので、詳細を知るにあたっては是非リンク先も読んでほしい
検証: GDB で実行中の php プロセスを覗き見る
GDB は実行中のプロセスを解析の対象とすることもできる。このエントリでは、無限ループするバグった php を GDB で覗いてみよう
続きを読むとある php なサービスを動かしている production サーバで、 100% CPUバウンドな php-fpm プロセスが複数いたので調査をしていた。
strace を取ると、 mremap(2) をひたすら繰り返しているだけのプロセスだった。 gdb でphp レベルのバックトレースを採取 してソースコードと照らし合わせた読んだ所、アプリケーションのバグで以下のような挙動になっていた
というものだった。ああ、無限文字列連結 …
文字列が長くなるほど必要なメモリが増えるので、 php のランタイムがメモリを割り当てる際に mremap(2) を呼び出しているのだろうとアタリをつけた
9/15(金) 東京から仙台まで走った
今年の夏休暇に二日かけて走破したルート を一日で走った。ひたすら丸一日 自転車で走ってみるのをやってみたかったのが、ようやく実現できた
前回とほとんど同じで国道4号線を北上する。寄り道は最低限
昨年から自転車で遠出をする機会が増えて、走ったルートを Garmin Edge で記録していた。Garmin Edge の記録は Garmin Connect や Strava 等の Web サービスで可視化できる
記録が増えてくると 過去の記録を全部重ね合わせた1枚の地図 を作ったらおもしろいんじゃね?という疑問がでてきた。 自分の知る限りでは複数回の走行記録を表示できるサービスはないようなので自作した
(追記)
Strava で有料プランを使うとよいっぽい。後からみつかるんだよな。こういうの〜〜
いろいろ試行錯誤してみたところ Python の folium というライブラリを使うことで 期待に沿った地図がつくれた
過去に記録した緯度・経度をプロットするだけで こんな地図になる。花弁のように青く広がっている線が、私が過去に走行した全軌跡
地図は HTML + JS で生成されていて、移動やズームできる
続きを読む