ブックマーク / sfujiwara.hatenablog.com (12)

  • Norikraのクエリをテキストファイルで管理する - 酒日記 はてな支店

    Norikra に登録されているクエリが大量にある場合、WebUIで登録、編集をしていると複数人での共同作業で管理しきれなくなるため、クエリをファイルにしておいてリポジトリで管理したくなります。 norikra-clientには query add, remove, suspend, resume などの機能が従来からありますが、add, removeは冪等でないため登録されているクエリに対して再度実行するとエラーになるので状態管理は難しい。 ということで、norikra-client に query dump query sync という機能を追加して 1.3.1 で取り込んでもらいました。これで JSON によってクエリを管理し、Norikraと同期することができます。 $ norikra-client query dump > dump.json [ { "name": "test"

    Norikraのクエリをテキストファイルで管理する - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2015/11/25
    弊社も導入済みですー
  • norikra-listener-mackerel で Norikra のクエリ結果を直接 Mackerel に投げる - 酒日記 はてな支店

    Norikra でクエリした結果を Mackerel に投げたい場合、これまでは fluent-plugin-norikra で取得して fluent-plugin-mackerel で送信する、という作りにしていたと思います。 Norikra 1.2以降では Listener plugin が使えるようになったので、クエリ結果を直接 Norikra 上で扱うことが可能になりました。 ということで、norikra-listener-mackerel (rubygems) を書きました。Norikra 単体で、クエリ結果を Mackerel のサービスメトリクスとして送信できます。 使い方 $ gem install norikra-listener-mackerel norikra が動作する ruby でインストールすれば、norikra start 時に自動的に読み込まれます。 クエリ

    norikra-listener-mackerel で Norikra のクエリ結果を直接 Mackerel に投げる - 酒日記 はてな支店
  • nginxでメソッドごとにリクエスト数制限を掛けたい - 酒日記 はてな支店

    アプリケーションでどうしても捌けない量のリクエストが一時的に押し寄せてしまう場合、アプリケーションサーバが死ぬのを避けるために GET は制限を掛けたいが、POST はリトライが面倒なのでなるべく通してあげたい、というような要求を nginx で処理できるかどうか。 実装として一番望ましいのは GET は 100 req/sec で制限 (超えたら503) POST は無制限 のようにメソッドごとに別々の制限を掛けることだったのですが、とりあえず HttpLimitReqModule を使うことで、メソッドごとに同一の上限を設定することはできました。 http { limit_req_zone $request_method zone=method:1m rate=100r/s; server { listen 80; location / { limit_req zone=method;

    nginxでメソッドごとにリクエスト数制限を掛けたい - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2013/06/20
    これ系はmod_mrubyなら簡単にできるはずなので、その程度にまでngx_mrubyの実装をやらないとなぁと思った。
  • MySQLでデータ領域をシステムと別diskにするならtmpdirも設定した方がいい - 酒日記 はてな支店

    某所に300ホスト以上を2年ほど監視していたZabbixのMySQLがありまして、データが100GBぐらいになってメモリ8GBのホストではdisk IOが辛くなってきたので、移行することにしました。普段はそんなにでもないのですが、housekeeperが動作して古いデータを消しに行くとバッファプールに乗っていない部分に読みに行って重いのです。 この際折角なので Intel S3700 (サーバ用のSSD) をおごり、 Zabbix-1.8 から 2.0 にアップグレード MySQL-5.0.77 から MySQL-5.6.11 に変更 システムは HDD で /dev/sda1 データは SSD で /dev/sdb1 を /data にマウント という構成で移行の検証を行っていたところ… MySQLのバージョンが大きく上がるので mysqldump を取得して restore 後、pat

    matsumoto_r
    matsumoto_r 2013/04/24
    別の某所では僕の作ったZabbixが1000ホスト以上(今は2000超えてる?)で3年くらい動いてるはずだけど、どうなったのかな...
  • [perl] Perlで同じコードを違うバージョンのモジュールでベンチマークする - 酒日記 はてな支店

    複数バージョンのモジュールで同じコードを実行してBenchmark.pmで計測したい、というケースにこう書けばいいかな、という例。 普通にBenchmark.pmを使ってしまうと同一モジュールを違うバージョンで複数読み込むことができないため、 バージョンごとに子プロセスを fork 子プロセスで use lib して @INC を追加してから use 計測した結果をファイルに保存して親プロセスで集約、表示 という流れで書きます。 use strict; use Benchmark qw/ :all /; use File::Temp qw/ tempfile /; use Storable qw/ nstore retrieve /; # 計測したいコード my $code = sub { my $c = Cache::Redis->new; for ( 1 .. 10 ) { $c->s

    [perl] Perlで同じコードを違うバージョンのモジュールでベンチマークする - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2013/04/02
    こういう書き方好きだなぁ
  • Redisでログの書き込みがblockを引き起こす - 酒日記 はてな支店

    「RedisかわいいよRedis」(by typester)……というほど自分は Redis 期でもないのですが、最近 Redis を使ったサービスの面倒を見ていて時々レスポンスが悪化する現象に出会ったので調べました。 前提 使用しているのは Redis 2.4.16 です。 redis.conf に "save [t] [n]" を定義すると、最後に save をしてから [t]秒間に [n]個以上の key が更新された場合に background で save (=bgsave) が実行されます。 save 60 10000これだと、60秒間に 10,000 keys です。 bgsave では redisは自分自身のプロセスを fork() し、子プロセス側は自分のメモリに乗っている内容をファイルにすべて書き出します。 この仕組みによって、1プロセス 1スレッドで動作している re

    Redisでログの書き込みがblockを引き起こす - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2012/12/05
    へー、参考になる
  • #isucon2 で優勝してきました - 酒日記 はてな支店

    なんでもありのいい感じにスピードアップコンテスト ISUCON が 2 になって帰ってきたので、参加して優勝を勝ち取ってきました。 まとめ的なものはこちらから livedoor Techブログ : ISUCON チームメンバーのblogも併せてご覧ください。 おそらくはそれさえも平凡な日々: #isucon2 で連覇させてもらってきました Redis布教活動報告 ISUCON 編 - unknownplace.org 今回は前回の ISUCON 優勝メンバーのひとり @sugyan が転職して出題側に回ってしまったので、@typester を招聘してチーム編成。@songmu と共に3人でチーム「fujiwara組」として再参戦です。 以下、作業用IRCのログからふりかえりますと…… 11:39:29 <typester> とりあえずrecent_soldはキャッシュってのはまずやることか

    #isucon2 で優勝してきました - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2012/11/05
    さすが「今回のアプリケーションでは非常に並列度が高い (合計200並列) ため、ある程度 Apache の子プロセス数を絞る (MaxClients 32とか) ほうが性能が安定し」
  • YAPC::Asia 2012で「Webアプリケーションのベンチマークとプロファイリング」を発表しました - 酒日記 はてな支店

    Perlのお祭りYAPC::Asia、今年もフルに参加して楽しんでいます。 初日のLT前に「Webアプリケーションのベンチマークとプロファイリング」というタイトルで発表しました。 発表資料はこちらです。 Webアプリケーションのベンチマークとプロファイリング 今回の発表の内容は 2012年10月発売予定の WEB+DB Press vol.71 「Perl Hackers Hub」でも掲載予定ですので、こちらも是非ご購入いただければと思います。 WEB+DB PRESS Vol.71 作者: 竹迫良範,Jxck,はまちや2,相澤歩,柴田博志,池田尚史,梅澤雄一郎,九岡佑介,近藤宇智朗,佐藤鉄平,mala,川添貴生,じょさん,後藤秀宣,藤原俊一郎,奥野幹也,堤智代,森田創,中島聡,A-Listers,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2012/10/24メ

    matsumoto_r
    matsumoto_r 2012/09/29
    関西にいるものとしてはこういう資料公開はすごくありがたい #yapcasia
  • RedisをKeepalivedでフェイルオーバーする構成案 - 酒日記 はてな支店

    master slave 構成を取っている Redis で、master が落ちた場合に slave を昇格させてフェイルオーバーしたいという要件がありまして、Keepalived と組み合わせて構成してみました。Redis の運用経験がないのでご意見などいただければありがたいです。 Scientific Linux 6.2 keepalived-1.2.2-3 redis-2.4.10 前提 Redis のレプリケーションではマルチマスター構成を取ることができない Redis の slave は起動時に master に接続し、全データを取得してコピーを取る その後は順次 master で更新されたデータをコピーする redis-cli で slaveof コマンドを実行することで、動的に master, slave を切り替えることが可能 このような作りになっているため、2ホスト間で

    RedisをKeepalivedでフェイルオーバーする構成案 - 酒日記 はてな支店
  • ロードアベレージを監視して任意のコマンドを実行する(monitで) - 酒日記 はてな支店

    他に似たツールがあれば教えて欲しいです ロードアベレージを監視して任意のコマンドを実行するコマンド - blog.nomadscafe.jp いままで使ったことはなかったのですが、monit でできるはず、と思って実験。一般的には、負荷が上がったりプロセスが応答しなくなったら再起動、のような用途に使うツールです。 # /etc/monit/monitrc check system localhost start program = "/path/to/command" if loadavg (1min) > 2 then start[追記] exec を使うほうがよいとのご指摘をコメントでいただきました。 check system localhost if loadavg (1min) > 2 then exec "/path/to/command"これでロードアベレージの1分平均が2を超

    ロードアベレージを監視して任意のコマンドを実行する(monitで) - 酒日記 はてな支店
    matsumoto_r
    matsumoto_r 2012/07/26
    Zabbixでもできるけど書くまでもないか...
  • cron で > /dev/null して椅子を投げられないための3つの方法 - 酒日記 はてな支店

    (タイトルは釣りです) いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルが twitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いなく捨てる方法だったのでつい crontabに > /dev/null 書いたら椅子投げる 2012-06-13 00:01:17 via YoruFukurou とつぶやいてしまったのですが、では出力を捨てないためにはどうすればいいのか。現時点での個人的ベストプラクティスを書き留めておきます。 デフォルト : メールで送る (MAILTO) せっかく cron daemon がログを捨てないためにわざわざメールで送ってくれるのに、それを > /dev/null で踏みにじるとはひどい。 とはいえ、

    matsumoto_r
    matsumoto_r 2012/06/13
    cronに登録するようなツールは内部でログをとっていて、出力はエンジニアが単体で使う時に意味があるもの、という事でcronでは/dev/nullへ!あ!痛い!
  • fluent-plugin-zabbix リリース - 酒日記 はてな支店

    fluentd の出力プラグイン、fluent-plugin-zabbix をリリースしました。 Github fujiwara/fluent-plugin-zabbix https://github.com/fujiwara/fluent-plugin-zabbix fluent-plugin-zabbix | RubyGems.org https://rubygems.org/gems/fluent-plugin-zabbix] 監視とメトリクス収集に Zabbix を使っているので、fluentd で収集した値を zabbix に送って扱いたかったのです。 挙動としては zabbix_sender でホスト側から送信するのと同様です。主に datacounter や flowcounter で集計した値を送るのを想定していますが、送信頻度に気をつければなんでも送れると思います。 作成

    fluent-plugin-zabbix リリース - 酒日記 はてな支店
  • 1