この一年まとめも3回目になった。去年はここ
今年は1/1の会社統合によって所属がNHN Japanに変わってオフィスが新宿=>大崎=>渋谷と流浪しましたが、仕事は変わらずやってます。その成果の一つがこれ
1年でPVが2倍に伸びました。ライブドアブログの主なニュースまとめ2012年版
もちろん良いブログ、良い記事に恵まれ、ソーシャル系サービスの波にうまく乗ったがことが大きな要因だとは思いますが、サーバ側でも逐次アプリケーションやSQLの改善をしたり、インフラの増強等をしてこれたのも良かったのではないかと自負しています。
GrowthForecast
GrowthForecastを公開したのは去年の年末でした。弊社でも様々な指標のグラフ化に利用していますし、他社でも多くの方が使って頂いているようです。
GrowthForecast を初めて紹介したのは上の去年の記事でした。その後、機能追加などをしつつ、ドキュメントもまとめました
GrowthForecastに1分更新グラフ作成とサマリーなどのJSONフォーマットでの出力機能追加
GrowthForecast のデータストアに MySQL が使えるようになりました
oranieさんがsqliteのパフォーマンス問題をいろいろ踏み抜いてくれたので、SQLiteの設定を見直しつつ、MySQLにも対応しました。
やったー GrowthForecast のページできたよー\(^o^)/
そして出来たのがこのドキュメントページです
GrowthForecast - Lightning fast Graphing / Visualization
ぜひ参考にしてくださいませ。
最近モリスさんによって追加されたJSON-APIについてはmikedaさんが素敵な記事をアップしてくれました。きっとモリスさんもなんか書いてくれるはず!
GrowthForecastでAPI使って複合グラフ作ったり、グラフの色を変えたりしてみた
CPANモジュール
ブログに書いてないモジュールもあったりするけど、いくつか作った。
某RSS集約サービスの裏側で動いていたりする。半年以上動作しているがとくに問題は起きていない
Plack::Middleware::ServerStatus::Lite にアクセス数表示機能をつけました
Proclet という supervisor モジュール書いてリリースした
今年のイチオシモジュール。機能追加もしつつ、GrowthForecastやこのあと作った様々なツールでProcletを使っている。Web+Workerな管理ツールを作る時のマストアイテムになりました。
ProcletでSTDOUT/STDERRにサービス名を追加して表示できるようになったよー
Proclet::Declare リリースしました Re: Proclet::Declare について考えた
やったー PerlでProcfileベースのプロセス管理ツール foreman の互換コマンド “proclet” できたよ
foreman互換のコマンドを作った事で複数のプロセスを使う開発も捗るようになった
SQLite のパフォーマンスチューニング、または DBIx::Sunny 0.16 の話
GrowthforecastでSQLiteのパフォーマンス問題に当たったので、その調査。DBD::SQLiteのデフォルトが変わって行く話もあるので要チェック
そういえば使ってない
File::RotateLogs っていうログをファイルに記録していくモジュールを書いた
社内の新サービスではAxsLog+File::RotateLogsという組み合わせが使われる事が増えてきた。
DBIx::DSN::Resolver::Cached をリリースしました
この二つのモジュールは、今社内で導入を進めているMHA for MySQLを使う際に、DNSへの負荷を減らすために使っている。ちなみにDNSにはMySQLをバックエンドにしたPowerDNSを用いている
Perl Advent Calendar Japan 2012 Hacker Track に Plack::Middleware::AxsLog の記事を書いたよ
Yet AnotherなAccessLogモジュール。advent calendarで紹介しました。奥様は20周年の某二人組のコンサートに行ってました。
やったー、ApacheナシでNagiosうごいたよー!。今はPHPが必要だと言う理由だけで古いバージョンのNagiosを使っているので年明けにこれを使ってアップデートするつもり。
Apacheモヒモヒ
素のApacheを使うのは小学生まで
Apache 2.2.15から入った mod_reqtimeout を Reverse Proxyで使う場合の注意点
最新のログファイルにリンクが作れるようになった Apache 2.4.1 の rotatelogs を試す
2.4系のサービス投入はまだ。大きなサービスでサーバ側でSSLを使うような話があればその前に検討したいと考えてる
Apache httpd.conf の Allow from .. にコメントを書いてしまうとDNSの逆引きが行われてレスポンスが悪化するので注意の件 + コメントが書けるようになるパッチ
設定を書く時にはパッチした方が便利だとは思う
modcopyheader ってのを書いた話 Re: Apache上のPerl FastCGIはCustomLogにデータを書くことができるか?
前職時代に作ったモジュールを思い出しながら復元。nginxだともっと簡単にできるようですね
Apacheのログで取得できる%{FooBar}nの値をCGIで得るには
mod_copy_headerの逆のことをやろうとした場合。使う場所があればmod_copy_headerに機能追加してもいいかな
Apache HTTP ServerをRFC6585の”429 Too Many Requests”に(とりあえず)対応させるパッチ
試してみた
nginx-1.1.x で httpなupstreamにもkeepaliveができるようになったので検証してみた
この機能は1.2系に追加されましたが、記事で紹介しているHTTP/1.0への対応はされてない。負荷が大きめの某所でHTTP/1.0に対応させるパッチを1.2系に適用して使っている
Replication Booster for MySQL を試す
実際に常に動かしています。たまにCPU 100%で張り付いていることがあるので監視して再起動とかしてたり。
CentOS 6.2 で RPS/RFS を使ってネットワークの割り込み処理を複数コアに分散してみた
姑系記事
アプリケーションのソースや設定をみて思った事などつらつらと
Plack::Middleware::ReverseProxy でリモートホストを確認する理由
Plack::Middleware::ReverseProxy はIPアドレスを利用する他のミドルウェアより先に指定しましょう!
Plack::Middleware::AccessLog でありがちな罠
cron等をつかって外部のAPIに問い合わせる場合は、毎時0分を避けるのが大人のマナー
僕らがmemcachedのキャッシュキーにsha1やmd5のhash値を使うを避ける理由
ウェブオペレーションエンジニアはリリース前のソースコードのココを見ているッ!
話してきた話/イベント
hb qp bp study 新年LT&ビアバッシュ2012に参加してビール飲んでピザ食べてきた
MySQL Beginners Talk で LT してきました
Monitoring Casual Talk #1 に参加してきた! #monitoringcasual
YAPC::Asia 2012 で発表してきました!日本よ、これが #yapcasia だッ!!
この発表の紹介したmy.cnfの公開がこちら
MySQLの設定ファイル my.cnf をgithubにて公開しました & チューニングポイントの紹介
isucon2 を開催しました。あるいは、優勝組の5倍のスコアを出す方法
まさか2回目があるとは思ってなかったisucon。吐いて寝てたアレは後日急性胃腸炎だと診断されました
2013年は
2012年はオペレーション・エンジニアという言葉がだいぶ認知されたように思えます。おぺかじもその一つでしょうか。
ただ残念に思っているのが、DevOps界隈などでオペレーションの自動化やそのツール・派手な可視化サービスが中心に紹介されて、サービスの可用性や性能、スケーラビリティを高めるソフトウェアの工夫にはなかなか目が向かないことです。大規模ならやっていて当然なんて言ってしまう人も現れる始末です。
なので、来年はオペレーション・エンジニアの業務の目的として「Site Reliability」という言葉を使って行きたいと思っている次第でございます。
なお、4月末には二人目の子供が生まれる予定でございます。お兄ちゃんとなる長男と生まれてくる子供の成長を今から楽しみにしています