タグ

ブックマーク / tagomoris.hatenablog.com (20)

  • 高負荷システムでNVMeデバイス使用時のfstrimとdiscard mount optionの話 - たごもりすメモ

    先にまとめると ディスクI/Oに高い負荷をかけるシステムでNVMeデバイスを使うときweekly cron jobでfstrimが走る状況になってたら停止しろ じゃないとfstrimが走った瞬間にI/Oパフォーマンスが刺さって死ぬ fstrimを停止するならdiscard mount optionを有効化しろ、ただしその状態でのI/O性能で問題ないかどうか測っておけ discard mount optionを有効化しても大きいファイルの削除には気をつけろ、プチfstrimみたいになるぞ 追記されるばかりで大きくなるファイル(そして削除されるファイル)はNVMeじゃないデバイスに置いとけ 高I/Oスループットを期待するシステムでのNVMeとfstrim 社内で小さめのインスタンスを多く並べてトラフィックを捌いてたのを色々要件があって大きめのインスタンスにまとめるようなシステムアップデートをや

    高負荷システムでNVMeデバイス使用時のfstrimとdiscard mount optionの話 - たごもりすメモ
  • Nginx 1.13 の http_mirror_module を試す - たごもりすメモ

    みなさんにも、さまざまな過去の経緯からくる微妙挙動を満載した外部ユーザ向けのHTTPサーバをリプレイスしたりするとき、実際にガツンとやっちまう前にちょっとリクエストを分岐して挙動と性能を確認したい、と思うことがあると思います。考えるだけでつらい気分になってくるやつ。でもやったほうが100倍マシなやつ。 どうしよっかなとちょっと考えたところ、少し前にこんな話があったのを思い出すはずですね*1。 asnokaze.hatenablog.com とはいえヨッシャ使うぞといきなりぶちこむこともできないので、まずいくつか試してみることにする。 準備 前提としては以下のように、元のアプリケーションと同じにホストにリバースプロキシが立っており、そこのnginxで http_mirror_module を使う、という想定*2。ミラー先はどこか適当なアプリケーションサーバ(あるいはロードバランサ)で、元アプ

    Nginx 1.13 の http_mirror_module を試す - たごもりすメモ
    dann
    dann 2018/04/08
  • TCP serverをSSL/TLS化するのに nginx の stream_ssl_module/stream_proxy_module が便利 - たごもりすメモ

    最近 Fluentd の通信プロトコルまわりをアップデートするためにあれこれいじっている*1んだけど、これはおおむね fluent-plugin-secure-forward がサポートしていた内容を Fluentd 組込みの forward plugin でもサポートしますよ、というものになる。 んで問題なのが secure-forward は SSL/TLS での接続のみしかサポートしてなかったんだけど forward では生の TCP で通信する*2ので、当に secure-forward と forward それぞれの実装間で互換性が保たれているのか、直接的には確認する手段がない、ということになってしまう。 TCP server の SSL/TLS 化 一方世の中には SSL/TLS ターミネータという機能があって、たとえばロードバランサなんかがこの機能を持っている。何をやるかと

    TCP serverをSSL/TLS化するのに nginx の stream_ssl_module/stream_proxy_module が便利 - たごもりすメモ
    dann
    dann 2016/08/25
  • 就職しました - たごもりすメモ

    結局3月からそのまま働くことにしました。 先日のエントリを書いて以来、当に多くの方から声をかけていただきました。ありがとうございました。来なら個別にご報告するべきところですが、ちょっと数が多くて厳しいので、このエントリをもって報告にかえさせていただきます。 またいろいろと話を伺う中で考えたことなどもあるので、そちらについては別途エントリを書くつもりです。 様々な話を聞いた上で、1月末の時点では自分でもわかっていなかったことがわかりました。最終的に重視したのは以下の点です。 技術ベンチャーであること ベンチャー企業として大きな成功を狙っていること、またそれが有望に見えること 優秀なプログラマが同僚に多いこと 退職エントリに書いた観点のほかに、この3点が今回の自分にとって重要だということは後から見えてきたことでした。 ということで Treasure Data に入社しました。Softwar

    就職しました - たごもりすメモ
    dann
    dann 2015/03/02
  • Ansible playbookで1台でも失敗したら即座に実行を止める方法 - たごもりすメモ

    毎回あれー?ってなってドキュメント読んだりググったりするんだけどうまく見付けられないので書いておく。 Ansibleはデフォルトだとtaskの実行が全ホストで失敗しない限り続く。言いかえると、あるタスクがあるホストで失敗したらそのホストについては以降実行されないが、成功した他のホストについてはplaybookの実行は継続される。 これは特に分散ストレージのセットアップなどにおいて、大変よくない。 よくないので1台でもtaskの実行に失敗した時点で止めたいというタスクには以下のように書いておく。 - hosts: ippai max_fail_percentage: 0 tasks: - name: .... failしているホストのパーセンテージが max_fail_percentage を「超えた」場合にplaybookが停止するので、1台でも fail したら即座に止めたい場合は 0

    Ansible playbookで1台でも失敗したら即座に実行を止める方法 - たごもりすメモ
    dann
    dann 2014/12/16
  • はじめてのmaven central 公開 - たごもりすメモ

    前置き:このエントリはJavaおよびJava周辺の*1開発環境に全く縁の無い人間が、可能な限り依存ソフトウェアを少なく手順をシンプルに保ったままやろうとしたものであり、知識・経験のある人にとっては全く最適な手段でなかろうことをお断りします。 先日のエントリ で書いたとおり woothee 1.0.0 をリリースした。Perl, Ruby, Node.js および PHP などはそれぞれの言語毎のモジュールリポジトリに登録されている。 が、Javaについては自分が Maven Central の勝手がわからず、されてると便利だよなーとは思いつつ放置していた。 が、なんと @making さんからMaven Central登録用の pull requestがきた 。きてしまった。これで最大の問題(xmlを書く)はおおむね解決されてしまったので、覚悟を決めて登録作業をすることにした。 せっかくや

    はじめてのmaven central 公開 - たごもりすメモ
    dann
    dann 2014/10/29
  • Ansible勉強会#1 にいってきた&しゃべってきた - たごもりすメモ

    Ansibleの勉強会あるといいねーという話をしていたら開催されることになったAnsible勉強会#1にいってきた。んでしゃべってきた。 Ansible 勉強会 #1 - connpass Ansible 勉強会 #1 - 資料一覧 - connpass 開催はIanががんばりました。おつかれ! あとレッドハットさんの会場を借りての実施がたいへんスムーズですばらしかった。なぜか申し込みが殺到して、新宿のほうでリモート会場まで用意されたようです。なんだそれすごい。 使ったこと無い人もけっこう参加してたようで、まあどういうものかは伝わったのかなあ。ユーザがどんどこ増えるとよいですね。 で、いろんな人がいろんな話をしててだいぶ面白い感じだった。わかりやすいansibleとはいえ他人の使いかたを聞いてると知らないこともちらほら出てくるものなので、勉強会やってるとそういうのがあってよい。 しゃべって

    Ansible勉強会#1 にいってきた&しゃべってきた - たごもりすメモ
    dann
    dann 2014/06/12
  • GrowthForecastのJSON APIおよびクライアントライブラリについて - たごもりすメモ

    雪にかこまれた温泉宿からこんちには。 クライアントライブラリを書いてからblogエントリにしようと思ったらこんな素敵エントリを書かれてしまった、くやしい……! GrowthForecastでAPI使って複合グラフ作ったり、グラフの色を変えたりしてみた - mikedaの日記 みんな大好き GrowthForecast ですが、じつに簡単にグラフを作れてしまえるので調子に乗って作りまくった挙句、複合グラフを作る手作業で死んだり色を揃える作業で死んだりそもそも無いといけないグラフが当にあるのか確認するのが面倒でうっちゃってたりするようなことがあります。必ずあるはずです。ですよねー。あるある。 ということでグラフの存在を確認したりグラフ設定を変更したりそもそも無ければ作ったり、という作業をコードからやりたかったので、ひとそろい作った。とりあえず GrowthForecast に JSON AP

    GrowthForecastのJSON APIおよびクライアントライブラリについて - たごもりすメモ
  • 4年前、おれがSIerの片隅で、何者でもなかった頃 - たごもりすメモ

    今からちょうど4年前の2010年2月、某巨大SIerの片隅でExcelPowerPointばかりを眺めて過ごしていた頃、おれは仕事でも仕事以外でもコードなんかまったく書いていなかったし、GitHubのアカウントも持ってなかった。毎日見積書とWBSと納品書と請求書と、Excel方眼紙の詳細設計書と格闘してた。 当時おれは30歳だった。一度はプログラマとして生きるのは自分には無理だと思って入社したSIerで数年やってて、そこそこ成功した数年を送っているとは思っていたけど、でもやっぱり、そんな毎日に飽きていた。 技術力を重視とか言いながらプロパー社員にコードを書かせようとしない会社の方針にも、svnもgitも閉じられててガチガチに監視されたネットワークに繋がせておいてオープンソースがどうのと言う文化にも、手順や履歴を重視とか言いながらロクにバージョン管理システムを使おうとしない一部の同僚にも、

    4年前、おれがSIerの片隅で、何者でもなかった頃 - たごもりすメモ
    dann
    dann 2014/02/28
  • ruby 2.0.0-p195 + fluentd v0.10.35 + msgpack v0.5.5 の組合せが素敵という話 - たごもりすメモ

    fluentd v0.10.35 が出ましたね! https://rubygems.org/gems/fluentd で、端的に申し上げまして fluentd をお使いの皆様は以下の組合せで使うのがおススメです。 Ruby 2.0.0-p195 Fluentd v0.10.35 MessagePack v0.5.5 なぜかというと以下のようなすばらしい利点があるからですね。 Ruby 2.0.0 でfluentdを走らせると大変高速 2.0.0 は each とかを回すときに非常に高速になるような改良が入っている 1.9.3 向けには funny-falcon patch として知られていたもの rvm を使ってビルドしていたrubyだと知らずに当たってるかも これが大量のメッセージに対してループが回りつづけるFluentdに超ハマる 手元計測で生の 1.9.3 の倍ちょっと高速 Ruby

    ruby 2.0.0-p195 + fluentd v0.10.35 + msgpack v0.5.5 の組合せが素敵という話 - たごもりすメモ
    dann
    dann 2013/06/13
  • jrubyでさくさくrspecを実行する(Nailgun or spork) - たごもりすメモ

    JRubyでコード書いてるとrspecを起動するたびに永遠にも等しい待ち時間が苦痛で苦痛で苦痛で。 素のrspecで5.6秒、rspecを実行するようにRakefileを書いた rake test で9.4秒、bundle exec rake test に至っては19.7秒という永遠にも等しい時間を必要とする。こうなると生きるのがつらくなってくる。 で、調べてたらsporkなるものがあるらしいんだけど試してみてもなんかいまいちうまくいかない。(うまく動いた、末尾の追記参照) んでさらに調べてたら、そもそもjvmの起動コストについてはNailgunという仕組みをつかってパスできるっぽい。世の中のRailsアプリだとRailsまわりのライブラリのロードがさらに辛いらしいが、まあそこは今の自分には関係ないのでパス。jvm起動コストだけなんとかなればいいや。 ということで、簡単。以下のようにする。

    jrubyでさくさくrspecを実行する(Nailgun or spork) - たごもりすメモ
  • 続 #fluentd の性能・リソースに関する最近のいくつかの傾向の話 - たごもりすメモ

    前回の話から、メモリについては西海岸方面の協力を得てあれこれ試していた。 #fluentd の性能・リソースに関する最近のいくつかの傾向の話 - tagomorisのメモ置き場 最終的には ruby 1.9.3-p125 + jemalloc + fluentd v0.10.16 でメモリ使用量が安定した。 jemallocについてはこのあたりを読むといいんじゃないでしょうか(自分で説明するのはめんどくさいw) jemallocとかLD_PRELOADについて調べてみた - As a Futurist... 結果、ピーク時間帯になっても used 6GB に行かないくらい。ワーイヤッタヨー。 ということでjemallocは社内用rpm*1を用意し fluentd 起動用のshファイル(supervisordからこれを指定して起動している)を以下のようにした。LD_PRELOADを加えただけ

    続 #fluentd の性能・リソースに関する最近のいくつかの傾向の話 - たごもりすメモ
  • #fluentd のためのプラグインをイチから書く手順(bundler版) - tagomorisのメモ置き場

    前に自分で書いた fluentdのためのプラグインをイチから書く手順 - tagomorisのメモ置き場 はたいへん重宝していたのだが、書いたすこし後になって実は現在すでに bundle gem コマンドを使うやりかたが良さそうだということがわかってしまったがばたばたしてて移行してなかった。 で、またひとつプラグインを書くことにしたのでついでに bundle を使った手順をざっくりまとめておく。以下のエントリをたいへん参考にさせてもらった。 T-POINTを取得するスクリプトをGistから移動, Bundlerを使ったGem作成メモ (自分用) - ただのにっき(2012-02-18) 準備とディレクトリツリーの作成 bundler は必要なので、なにはなくとも入れておこう。 gem install bundler そしてプラグイン用ディレクトリツリーを作成する。今回は DataCount

    #fluentd のためのプラグインをイチから書く手順(bundler版) - tagomorisのメモ置き場
  • #fluentd な今だからこそふりかえる scribed のすべて - たごもりすメモ

    最近 fluentd というツールのことがたいへんよく話題に上がっており、かく言う自分もささやかながら使用している身なのだが、それはそれとして比較対象に上がってくるツールに scribed というものがある。これがどういうものなのか、話には聞いていてもよくは知らないという人が多いようなので、これもささやかながら触ってみている自分としてはここらで一度まとめておかねばなるまい、と思った次第である。 日全国に10人くらいはいるかもしれない scribed のヘビーユーザ各位に捧げる。 なお記憶と経験だけを頼りに書き殴るので、意思決定の重要な局面とかで「これこれこういうブログにたごもりすなる者がこのようなことを書き残しており」などと引用するのはくれぐれも避けていただきたい。 また途中から思いっきりビール飲みながら書いたので文章自体の品質にも問題のある可能性がある。 そも scribed とは何か

    #fluentd な今だからこそふりかえる scribed のすべて - たごもりすメモ
    dann
    dann 2012/02/15
  • fluentd のベンチマークとってみたよ! - たごもりすメモ

    入出力プラグインをrubyで書けるのがじつにいい感じの fluentd がいい感じに見える。 fluent/fluentd · GitHub ので使えるかどうか、使えるとしたらどれくらいのノードを用意すればいいのかについて考えるため、とりあえずベンチマークをとってみた。 結論 以下非常に長くなるので結論だけ書くと、大変使える感じ。現状だとほとんど何も考えずにデータ中継させても秒間1万メッセージ、100Mbpsくらいまでは処理できる。効率よくなるよう流す側も考えてやれば 300Mbps を超えるデータの転送に成功した。だいぶいい感じ。 なおこれは in_scribe および out_scribe を使用した場合で、開発者 @frsyuki によるとMessagePackでのデータ転送の場合はこの倍くらい出るらしい。 もちろんこれは右から左に流しただけなので現実にタグによるルーティングだとかロ

    fluentd のベンチマークとってみたよ! - たごもりすメモ
    dann
    dann 2011/12/05
  • fluentdのためのプラグインをイチから書く手順 - たごもりすメモ

    (2012/02/21追記: bundle gem して作成する手順をこっちに書いた http://d.hatena.ne.jp/tagomoris/20120221/1329815126 ) fluentdがいい感じでパフォーマンスにも問題ない状況になってきたように見えるので、よっしゃいっちょプラグインでも書くか! と思ったもののリポジトリをgithubに作ったはいいがコード書いてテストしてgemとしてリリースするまでには様々にめんどくさいことがあり gem とか作ったことない自分*1には摩訶不思議なあれやこれやが広がっていてコード書くところに辿りつくまでが長過ぎるというか、端的に言ってあちこちに散在する情報を集めるのに必要な時間とともにやる気がとめどなく流出していってもうだめだという気分になる。 というような主旨のtweetをしてみたもののどうにかなるわけでもないので、試行錯誤しながら

    fluentdのためのプラグインをイチから書く手順 - たごもりすメモ
    dann
    dann 2011/11/21
  • "Hbase at Facebook" に行ってきた - たごもりすメモ

    名称表記が揺れてて微妙だけど Hbase at FaceBook on Zusaar このイベントに行ってきた。Facebookの人は "HBase Tokyo meetup" と認識していたようだ。 内容のまとめはやらないので、以下の各ページなどをご覧になると良いのではないでしょうか。 Tokyo HBase Meetup - Realtime Big Data at Facebook with Hadoop and HB… Hbase at FaceBookのまとめ - Togetterまとめ FacebookがHBaseを大規模リアルタイム処理に利用している理由(前編) - Publickey FacebookがHBaseを大規模リアルタイム処理に利用している理由(後編) - Publickey セッションの内容と自分が考えたことと人としゃべったことをいっしょくたにここに書いておく。

    "Hbase at Facebook" に行ってきた - たごもりすメモ
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
    dann
    dann 2011/05/13
    xargs -P
  • RAIDレベルの話: 1+0と6はどっちが安全か? - たごもりすメモ

    仕事でちょっくら12台のHDDを使ったRAIDアレイを組むんだけど、その折にちょうどTwitterで「RAID-1+0にしないとRAID-6とか怖くて使えませんよ!」というウソ八百な内容のWebページのURLを見掛けたので、いいかげんそのような迷信が消え去ってもよかろうと思って書くことにした。 1重ミラー設定のRAID-1+0は安全性においてRAID-6に劣る。ただし、正しく運用されている場合に限る。*1 知っている人はずっと前から知っている事実ではあるんだけど、某巨大SIerなんかでも高い方が安全に決まってる的な残念な脳味噌の持ち主がいっぱいいて「いやあデータの安全性を考えるとRAID-1+0」とか考えもなしにクチにし、そっちの方がディスクがいっぱい売れて嬉しいストレージベンダーもニコニコしながら否定せず売りつけて去っていくといううわなにをす(ry まあそんな感じで。ちなみに正しくない運

    RAIDレベルの話: 1+0と6はどっちが安全か? - たごもりすメモ
    dann
    dann 2011/04/19
  • 障害に強いscribeサーバ構成と設定 - たごもりすメモ

    scribeによるログ配送についていくらか試したりしつつ実戦投入しているのでその話。 今のところピーク時で20Mbps程度の流量で、100Mbpsを超えてくるようになると流量制限をシビアに考えたり中継サーバを複数台構成にしたり考えることになるのかなーと思っているが、現状はまだそこまでやってない。世の中には考えている人がぜったいいるはずなので話を聞いてみたいなあ。なんか「動かしてみた」レベルの話しかぐぐっても見付からない。悲しい。 サーバ構成 各サーバからログを(ほぼ)リアルタイムにscribedに流すのはいいとして、1台立ててるだけだと障害があったら全て終了してしまう。これはまずいので、複数台構成にする。 scribedはdeliverとcentralの両方で起動する。(設定はもちろん異なる。後述。) 通常は各サーバはすべて deliver サーバに接続してログを送る。deliverサーバ

    障害に強いscribeサーバ構成と設定 - たごもりすメモ
    dann
    dann 2011/02/02
  • 1