pt-query-digest で memcached の操作を解析する

pt-query-digest は memcached のダンプも解析することができます。
type オプションで memcached を指定するだけです。

ダンプ取得

$ sudo tcpdump -i eth0 port 11211 -s 65535 -x -n -q -tttt > /var/tmp/memcached.dump

pt-query-digest で解析

$ cat /var/tmp/memcached.dump | pt-query-digest --type=memcached | grep -v -e '^\s*#' -e '^\s*$'

こんな感じで、memcached の key へのアクセスが分かります。

get xxxxxxxxxxxxxxxxxxxx
delete yyyyyyyyyyyyyyyyyyyy
set zzzzzzzzzzzzzzzzzzzz
get xxxxxxxxxxxxxxxxxxxx

pt-query-digest

YAPC::Asia Tokyo 2015(2日目)に行ってきた #yapcasia #yapcasia2015

ブログを書くまでがYAPCです。
1日目はこちら。

Google Cloud Platform の謎テクノロジーを掘り下げる(Deep Dive into Google Cloud Technology)

GCP のお話。
以下の 4 点をお話されてました。

  1. Big Data
  2. Container
  3. Networking
  4. The Feature

Google 社内では MapReduce は classic な技術だし、Big Query は 2006 年ごろから使っているので枯れている技術という話は興味深かった。
あと、「Google 社内で Big Data とは言わない。全てが Big Data だから。」という言葉はカッコイイと思った。
それにしても、bq 速い。

謎テクノロジーは謎のままだった。。。

我々はどのように冗長化を失敗したのか

式年遷宮インフラストラクチャ 3 部作(?)の第 2 弾のお話。
リリース前に冗長化やめたとはいえ、チャレンジしている姿勢は素晴らしいと思った。
このセッションだけではないけど、Consul が必要不可欠なツールになっているなぁと感じた。

  • 期待するな、計測しろ
  • 挑戦するなら、徹底的に検証しろ
  • 当たり前のことを当たり前に正しく行おう

最終章期待してます!!

MySQL で2億件のシリアルデータと格闘したチューニングの話

限られたリソースの中でのチューニングのお話。

  • インデックスの再構築こわい
  • テストデータは、本番データとほぼ同じものを準備(数値のランダム性とか)

ソーシャルゲームにおける AWS 移行事例

オンプレミス環境ソーシャルゲームAWS へ移行したお話。
RDS や ElasticCache for Redis を使用する際の罠とか Tips が参考になった。

  • RDS はタイムゾーンが変更できない
  • Percona server の mysqldump には、create table 文から unique と index を取り除くオプションがある
  • ElasticChache for Redis で 10GB のデータをわたして flashall すると勝手に fail over、しかも flashall が永遠に終了しない
  • RDS の Multi-AZ だと、書き込み速度が 2 倍になる(両 AZ に書き込むため)

Profiling & Optimizing in Go

Go プログラムの最適化・プロファイリング方法をライブコーディングで説明。
私のレベルだと内容的にはほとんど ? な状態でしたが、プロファイリングツールが充実していることは分かった。
Go がんばろう。

感想とか

今回も刺激的なイベントでした。
最後の YAPC::Asia と思うと、感慨深いです。
私個人としては、Perl コミュニティに何も貢献できていないので何らかの形で貢献できるようになりたいなぁと思いました。*1

最後になりましたが、スタッフのみなさん、スピーカーのみなさん、参加者のみなさん、お疲れ様でした!


おまけ

  • 同時通訳がスゴかったです*2
  • 無限コーヒーの紙コップがオシャレ


YAPC::Asia Tokyo 2015

*1:Perl イベントで LT するくらいの力は付けたい

*2:とはいえ、やはり英語大事だなと思いました

YAPC::Asia Tokyo 2015(1日目)に行ってきた #yapcasia #yapcasia2015

YAPC::Asia Tokyo 2015 に行ってきました。
ブログを書くまでがYAPCです。

メリークリスマス!

Perl開発をトールキンの「ホビットの冒険」と「指輪物語」に例えながらの説明。
Perl6に興味を持ったのはもちろんですが、「ホビットの冒険」と「指輪物語」を読んでみようと思った。
Perl6は2015年のクリスマスにリリースされるそうです。*1
以下、印象に残った言葉。

  • 人の価値は、何を得られるかではなく、何を与えられるか
  • 正しく失敗する (I FAIL GOOD)
  • Perl5とPerl6は同じ物語
  • perlは成長の物語


世界展開する大規模ウェブサービスのデプロイを支える技術

Miiverse のデプロイのお話。
デプロイ改善したいので、参考になりました。
以下、メモ。

  • デプロイ時に停止してあるインスタンス起動してデプロイ、オートスケール時にそのまま突っ込む
  • Consul + strecher がデプロイ速くて良さそう
  • Miiverse は Perl5
  • Git 同期ツール hesokuri 初めて知りました

TBD

Ruby のパパ Matz ことまつもとゆきひろ氏による、Ruby の反省点・20 年間のアーキテクチャの変化で言語設計がどう変わったか・新言語「Streem」についてのお話。
パイプラインで処理をつなげるとマルチコアを使ってくれるからシェルスクリプトが見直されているという話は面白かった。
Streem は名前だけ知っている程度で、設計思想とか知らなかったので、興味深い話でした。

  • Rubyの悪いところは、Perlの影響
  • GIL(Global Interpreter Lock) のせいでマルチコア使えないと言われると、外してどんだけクラッシュするか見せてやろうかと思うことがある
  • Streem のアーキテクチャは、ピタゴラスイッチ・プログラミング*2
  • 「絶対に型を書きたくないでござる」
  • 「日本で唯一の言語デザイナー」

matz/streem · GitHub


Perlの上にも三年 〜 ずっとイケてるサービスを作り続ける技術 〜

はてなブログの裏のお話。
Perl の最新を求め、オブジェクト指向ドメイン駆動開発などなど試行錯誤した内容で、すごく面白かった。
きっと、オブジェクト指向入門 と ドメイン駆動設計 本がバカ売れしていると思います。

  • メソッド名は気持ちが大事
  • 名前決め大事
  • 一度Perlの世界からでて、いいものをPerlに持ち帰ってくる
  • 歯を食いしばって、実装しろ
  • フルスクラッチするときになったらわかるのでは
  • 最高

Electron: Building desktop apps with web technologies

Electron のお話。
デモがあって、分かりやすかったと思います。
Perl チャレンジ*3なるお題が出されました。

Perl6 on JVM: It works??

Perl6 を JVM で動かすお話。
以前は遊ぶことすらできなかったけど、遊べるようになった。
Web アプリケーション開発に必要な要素(File access, DB access, JSON, HTTP::Server, HTTP::Client etc...)は揃っているらしい。。。


2日目に続きます。
(追記) 2 日目書きました


YAPC::Asia Tokyo 2015

*1:たぶん、きっと

*2:パイプライン組立->パイプラインにデータが流れる

*3:PerlJavascript に変換するものがあるので、それを使って Electron アプリを作る

GMO ConoHa を使ってみる(1) サインアップから API Token 発行まで

www.conoha.jp
5 月にリニューアルされた GMO ConoHa を使ってみました。
OpenStack API 互換だったり時間課金があったりと、VPS というよりは Iaas なクラウドに近い感じです。

サインアップ

アカウント作成

  • https://www.conoha.jp/ にアクセスし、[ お申込み ] をクリック
  • [ メールアドレス ] と [ パスワード ] を入力して、アカウント登録
  • 登録した [ メールアドレス ] と [ パスワード ] でコントロールパネルにログイン

認証・ユーザ情報・支払情報入力

  • [ 電話認証 ] か [ SMS認証 ] で本人確認を行う
    • 電話認証だと、イメージキャラクタである美雲このはから電話がかかってきます*1
  • [ お客様情報 ] 入力
  • [ 支払方法 ] 入力

その他設定

  • アカウント設定から [ 言語設定 ] と [ モード設定 ] を変更します*2
    • 言語設定 : English
    • モード設定 : ConoHa Mode

API 設定

API 設定を行い、API 認証に使用するトークンを取得できるようにします。

  • コントロールパネルにログインし、[ API ] をクリック
  • API User 追加
    • API User 用 Password を入力

トークン取得

トークン取得に必要な情報は以下のものです。

curl -i -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"%username%","password":"%apipass%"},"tenantId":"%tenantid%"}}' \
https://identity.tyo1.conoha.io/v2.0/tokens | tail -n 1 | jq -r '.'

JSON 形式でレスポンスがくるので、jq とかあると楽です。

*1:もちろん電話認証しました!

*2:この辺はお好みで

端末リセット時のエラー (E:failed to mount /cache (invalid argument))

-- Wiping data...
Formatting data...
E:failed to mount /cache (invalid argument)
Formatting cache...
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/log
E:Can't open /cache/recovery/log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_log
E:Can't open /cache/recovery/last_log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_install
E:Can't open /cache/recovery/last_install
Data wipe complete.
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/log
E:Can't open /cache/recovery/log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_log
E:Can't open /cache/recovery/last_log
E:failed to mount /cache (invalid argument)
E:Can't mount /cache/recovery/last_install
E:Can't open /cache/recovery/last_install
E:Failed closing /dev/block/platform/msm_sdcc.1/by-name/misc (I/O error)
E:failed to mount /cache (invalid argument)

リカバリモードからの端末リセット、ファクトリリセット時に上記エラーが出た場合、システムボード不具合(ハードウェア不具合)の可能性があります。