タグ

ブックマーク / wyukawa.hatenablog.com (13)

  • fluent-plugin-uri_decoderをpatchしてCPU使用率を下げた話 - wyukawa's diary

    td-agentのprofiling - wyukawa’s blog に書いたようにfluent-plugin-uri_decoderが重いということまではわかりました。 じゃあどうすっかという話なのですが、内部で議論がありRuby 2.4 + CGI.unescape + fluentd filterでいけばいいんじゃね?ということになりやってみました。 sonots先生も言ってるし背中を押されました。 便利そう(ステマ)というのと、URI.decode は obsolete ですね、というのと CGI.unescape なら新しめの ruby で高速化されてるはず、というのと / “td-agentのprofiling - w…” https://t.co/t6R2sTgvWR— そのっつ (Naotoshi Seo) (@sonots) 2017年6月8日 Ruby 2.4 + C

    fluent-plugin-uri_decoderをpatchしてCPU使用率を下げた話 - wyukawa's diary
    hiroomi
    hiroomi 2017/06/13
  • 例外処理について個人的に思うことを書いてみる - wyukawa's diary

    Javaの検査例外の仕組みは理解はできるけど、結果的にはあまりうまくいかなかったかなというのが個人的な見解です。理由は例外をcatchさせても無視されることが多いから。 下記のにもそれに近い見解が述べられていた気がするけど忘れた。 Java: The Good Parts 作者: Jim Waldo,矢野勉,笹井崇司出版社/メーカー: オライリージャパン発売日: 2011/02/24メディア: 大型購入: 3人 クリック: 148回この商品を含むブログ (37件) を見る 僕がSIerにいた頃は、開発者に例外をcatchさせてはいけないと言われたものでした。 共通チームが共通部品やフレームワークを整備して、他チームがそれを使って開発することが多いわけですが、その場合に個々の開発者が例外をcatchする必要がないように整備するのが一般的でした。 例えばStruts 1のActionのex

    例外処理について個人的に思うことを書いてみる - wyukawa's diary
    hiroomi
    hiroomi 2017/02/26
  • レポーティング、モニタリング、監視で使うストレージは何が良いんだろう - wyukawa's diary

    題記のようなことを考えていて、レポーティング、モニタリング、監視で使うストレージは全部統一されているほうが当然運用が楽だと思うのですが、現状だと統一できなくて用途ごとに分けてHadoop, Prometheus, Elasticsearchに格納するというのが僕の今のところの見解です。 僕は日頃の仕事はログ分析基盤を構築、運用をしつつデータ加工バッチを書いたりしています。 各サービスのPV, UUといったメトリクスを日々レポーティングするのであればアクセスログ、アプリケーションログ、各サービスのマスターデータ(例:ユーザ情報、商品マスタ)などをHadoopにぶっ込んでHiveでdailyで集計すればことたります。 Hadoopの良いところはSchema on readでとりあえずデータをぶっ込んでおいて後で解析できるところです。しかも容量やCPUパワーが足りなくなったら台数ふやぜば簡単にス

    レポーティング、モニタリング、監視で使うストレージは何が良いんだろう - wyukawa's diary
    hiroomi
    hiroomi 2016/05/08
  • バッチ処理、ジョブ管理について書いてみる - wyukawa's diary

    僕はHive, Pythonでバッチ処理を書いてAzkabanでジョブ管理するシステムを構築、運用した経験が2年ほどあるので今日はバッチ処理、ジョブ管理について書いてみようと思います。 僕の経験上Hadoop特有の部分、例えばテスト環境が作りづらいとかバッチサーバーはジョブをsubmitするだけなので負荷はそんなにかからないとか、はあるけれど割と汎用的なのではないかと思います。そもそもバッチ処理、ジョブ管理について書かれたものはほとんど見た事がないので参考になれば嬉しいし、こういう良い方法もあるよ!とかあれば是非ブログ等に書いてほしいと思っております。 最初に言っておくとバッチ処理、ジョブ管理において重要なのは障害時のリカバリのしやすさです。正常時はまあいいでしょ。 なので例えば引数に日付を持てないようなバッチ書いたら辛いですし、LL言語で書く方がコンパイル、パッケージングとか楽です。CP

    バッチ処理、ジョブ管理について書いてみる - wyukawa's diary
    hiroomi
    hiroomi 2015/06/17
  • 業務時間外に障害対応しなくて済むようにしていること - wyukawa's diary

    結論から先に書くと 夜間のcron実行はなるべくさける 金曜デプロイ禁止 です。 なぜ我々は業務時間外、主に酒を飲んだり寝ている時に障害対応をするハメになるのか - oranie's blogを読んで自分が思うことをつらつらと書いてみます。 コンテキストをはっきりさせた方がいいのでそれについてまず書きます。 僕の場合はB2C向けのサービスが出しているログを収集して定期的にバッチ実行しKPIを自社内にレポーティングするという仕事をしています。 要するに社内システム担当です。コストセンターとも言いますね。 その意味で番サービスと比べればサービスレベルは低くてもまだ許されます。別に障害が起きていいわけではありませんが、安定性を重視しすぎて新しい統計値を取得するための開発が遅れてはダメですからね。 番サービスのピーク時間帯が22時台なのでログ収集の負荷もその時間帯に高くなります。クックパッド

    業務時間外に障害対応しなくて済むようにしていること - wyukawa's diary
    hiroomi
    hiroomi 2014/01/28
    “夜間のcron実行はなるべくさける 金曜デプロイ禁止”
  • RDBMSのコネクションプーリングとかその辺の話 - wyukawa's diary

    データベース技術の羅針盤 from Yoshinori Matsunobu これは素晴らしい資料で後半のキャリアの話とか面白いんだけど、今回書くのはp6,p8に書かれていた下記の話です。 PosgreSQLは接続がプロセスベースなのでLL言語との相性がよくない Pgpool(これはプロキシサーバー的に使うらしい)などのコネクションプールと併用することが多い MySQLは接続がスレッドベースなのでコネクションプーリングが使いづらいLL言語環境では魅力 なんでLL言語だとコネクションプーリングが使いづらいのかわからずつぶやいたらリプライもらってついでにちょっと前に話題になったRDBMSでコネクションプールが必要な理由、わからない。 - Togetterや7年前のブログエントリであるコネクションプーリングの話 - naoyaのはてなダイアリーを読み返してみて思ったことを書いてみる。全然まとまって

    RDBMSのコネクションプーリングとかその辺の話 - wyukawa's diary
    hiroomi
    hiroomi 2013/11/17
  • Hadoopサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - wyukawa's diary

    Linuxサーバがディスク容量不足になった!何か消さねば!ってなった時にどう対処するか - 元RX-7乗りの適当な日々 Linuxサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - たごもりすメモ Cassandraサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - oranie's blog MySQLサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - Y-Ken Studio 日々の覚書: MySQLサーバーのディスク容量減少アラートが飛んでくる前に Gentooサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - Dマイナー志向 もう何番煎じか分からなくなってきましたがHadoop版が無いので書いてみます。 2013/08/05追記 Hadoop 1.0.3の話を書いています。 まずHBas

    Hadoopサーバのディスク容量減少アラートが飛んできた!ってときにどう対処するか - wyukawa's diary
    hiroomi
    hiroomi 2013/08/03
  • なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - wyukawa's diary

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎【電子書籍】Jesse Storimer, 島田浩二(翻訳), 角谷信太郎(翻訳) 達人出版会 発行日: 2013-04-25 対応フォーマット: EPUB, PDF, ZIP 詳細を見る まだβ版ですが、面白そうだったので買ってみました。初代iPadのiBooks上で全152ページで値段が2,980(正式には3,360)円というのはちと高い気がしますが、原書が$27なのでまあしょうがないでしょう。 で、ざざっと読んでみた感想としては面白いですね。Unixのプロセスの話をRubyで学ぶようになっていてC言語でやるよりはRubyの方が抽象度が高いので比較的わかりやすいと思います。類書も無いような気がしますね。 シグナルのあたりとかパラパラと読んでいて、そういやfluentdだとどうなってんだっけと思いsupervisor.rbを読んで

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎 - wyukawa's diary
    hiroomi
    hiroomi 2013/05/10
  • ログ解析についてつらつらと考えていること - wyukawa's diary

    ログ解析についてつらつらと考えていることを書いてみたいと思います。 Hadoopを用いたログ解析によってマーケティングを変革し売り上げを向上させようという話はよくあります。 この手の話はたいていBtoCで例としてはメールでレコメンドして商品を買ってもらうとかですね。 ログ解析がどういうフローかというと、ログを埋め込んでログを収集して蓄積して解析してそのレポートを見て何らかの施策を打つ、という感じになります。 図にするとこんな感じ 今話題沸騰中の「Fluentd」はログ収集を担当します。といいつつ僕自身はFluentd使ったことないです。記事を読んだくらいです。 ちなみにどれぐらい話題沸騰中かというとこれぐらい定員オーバーしてます。すごすぎ。 クレジットカード現金化詐欺【業界人が教える口コミ情報】 ログ埋め込みはJavaならLog4j使って埋め込んだりするでしょう。 Apacheのアクセスロ

    ログ解析についてつらつらと考えていること - wyukawa's diary
  • Hadoopはルイーダの酒場 - wyukawa's diary

    昨日の深夜に某氏講師による「JavaエンジニアのためのHadoop入門」 の話題がネタになってましたが、僕はJavaエンジニアとしてキャリアを積んできてHadoopに入門しました。キリ HadoopはJavaで書かれているのでJavaエンジニアのキャリアのひとつとしていいと思いますけどね。 当初はHiveでデータ処理をしていましたがうまくHiveQLが書けず、DBエンジニアからHadooperになった人にSQLやデータモデルについて教えてもらったりしてました。 最近はインフラまわりをやるようになって、HeartBeatわかんねーーーーってなって、インフラエンジニアからHadooperになった人にいろいろ教えてもらったりしてました。 かようにHadoopを使う場合はいろいろなスキルが求められます。 まずインフラ構築、運用ならざっと下記のような作業が必要になるでしょう。 ハードウェア選定 ハー

    Hadoopはルイーダの酒場 - wyukawa's diary
    hiroomi
    hiroomi 2011/11/24
  • Hiveのベストプラクティス(かもしれないこと)をめもっておく - wyukawa's diary

    Hiveの現場に来て4か月経ち回りのやり方を観察したり、他の事例を調べたりしているうちにHiveを使用する際のパターンというかベストプラクティスが見えてきた気がするので書いてみるよ。 ユースケースはログ解析です。 1. ファイルフォーマットと圧縮 ログは圧縮率高いので圧縮すべし。でもスプリット可能であるためにはってことでSequenceFileでブロック圧縮は確定。 圧縮コーデックは圧縮率を考えてgzip。 ちなみに圧縮率は bzip2>gzip>LZO でスピードは LZO>gzip>bzip2 だ。bzipはスプリット可能で圧縮率も高いんだけどHadoop 0.20系ではまだ使えなかったと思う。Hadoop 0.20系でも使えるらしいですが遅くて使い物にならないようです。 最近はsnappyなんてのも出ててCDH3 Update 1で使えるようになりましたね。 snappyは圧縮率はL

    Hiveのベストプラクティス(かもしれないこと)をめもっておく - wyukawa's diary
    hiroomi
    hiroomi 2011/11/12
  • シェルスクリプトのユニットテスト - wyukawa's diary

    ちょっとシェルスクリプトを書く機会があったので、ユニットテストできるかなーと思って調べてみたのでメモ。 こんなんがあった。 Google Code Archive - Long-term storage for Google Code Project Hosting. ダウンロードして解凍 $ wget http://shunit2.googlecode.com/files/shunit2-2.1.5.tgz $ tar zxvf shunit2-2.1.5.tgz サンプル実行 $ cd shunit2-2.1.5 $ ls Makefile doc lib src bin examples share $ cd examples/ $ ls equality_test.sh math.inc mkdir_test.sh lineno_test.sh math_test.sh party

    シェルスクリプトのユニットテスト - wyukawa's diary
    hiroomi
    hiroomi 2011/11/12
  • ミドルウェアの設定ファイルをどのようにバージョン管理すべきか - wyukawa's diary

    僕は最近インフラ屋さんになりつつあるのでミドルウェアの設定ファイルをどのようにバージョン管理すべきという話をちらほら考えてます。あ、実際に何かを試した訳ではないです。あしからず。 開発したアプリケーションのソースコードをバージョン管理しないというのは今時あり得ないでしょう。バージョン管理ツールに何を使うかは置いといて。 でも一方ではミドルウェアの設定ファイルをバージョン管理している現場は少ないのではないかと思います。少なくとも僕は見たこと無いです。 まあ僕自身がアプリ屋経験しか無いのでインフラ屋現場ではひょっとしたら違うのかもしれませんが、ここでは少ないという前提で話を進めます。 バージョン管理しないとどうなるかっていうと、例えば「○○サーバをDNSの設定に追加する」とかいうタスクがあってそれを完了したとして、後に振り返って見たときに具体的に何をしたのかわかりませんよね。実はその後も設定フ

    ミドルウェアの設定ファイルをどのようにバージョン管理すべきか - wyukawa's diary
    hiroomi
    hiroomi 2011/11/06
  • 1