2012-01-01から1年間の記事一覧

RSS対応NICなのに割り込み処理が複数コアに分散しない…のはirqbalanceが動いてなかったから

タイトルがすべてでございます。NICの割り込み処理が1コアに集中してしまい、ボトルネックになって性能が出ない場合があるという話は最近広く知られていると思います。NICのハードウェアレベルで割り込みを分散してくれる RSS(Receive Side Scaling) という…

Redisでログの書き込みがblockを引き起こす

「RedisかわいいよRedis」(by typester)……というほど自分は Redis 期でもないのですが、最近 Redis を使ったサービスの面倒を見ていて時々レスポンスが悪化する現象に出会ったので調べました。 前提 使用しているのは Redis 2.4.16 です。redis.conf に "sav…

[fluentd] 同じメッセージを間引く fluent-plugin-suppress を書いた

fluentdで、なんらかの理由で大量に同じメッセージが送信されてきたときに、それを渡す output plugin によってはちょっと困ることがあります。たとえば out_mail を使うとメールが大量に飛んでしまう。ということで、同じ (指定したkeyの値を連結したものが…

#isucon2 で優勝してきました

なんでもありのいい感じにスピードアップコンテスト ISUCON が 2 になって帰ってきたので、参加して優勝を勝ち取ってきました。まとめ的なものはこちらから livedoor Techブログ : ISUCONチームメンバーのblogも併せてご覧ください。 おそらくはそれさえも平…

Zabbix-1.8で運用中のzabbix-serverを分散監視に切り替える場合の注意

実運用に使用している Zabbix-1.8 を、とある事情で途中から分散監視設定に変更しようかと思い立って調査したところ、気を付けないと危なそうなのでメモ。(zabbix-2.0以降はみていません)分散監視のドキュメントを参考に、 zabbix_server.confファイルに次の…

fluentdで複数箇所から同一のファイルに出力する

このエントリは「ウィークリーFluentdユースケースエントリリレー」への参加記事です。ウィークリーFluentdユースケースエントリリレーまとめ(現在12本まで。) - iをgに変えるとorangeになることに気づいたoranieの日記fluentd で一番手軽な出力 plugin と…

WEB+DB Press vol.71 に「Webアプリケーションのパフォーマンス改善」を寄稿しました #wdpress

本日10/24発売の技術評論社 WEB+DB Press vol.71、Perl Hackers Hubの連載に「Webアプリケーションのパフォーマンス改善」というタイトルで寄稿させていただきました。WEB+DB PRESS Vol.71作者: 竹迫良範,Jxck,はまちや2,相澤歩,柴田博志,池田尚史,梅澤雄一…

手軽に使える forward http proxy : stone, Tinyproxy

直接グローバルに繋がる経路をもたないホストから http アクセスしたいので http proxy を使いたい。Squidは定番ですが、もう少し手軽なのはなにかないかと思っていたところ twitter で教えていただきました。ありがとうございます。 reverseじゃなくてforwa…

MySQL 5.6のInnoDB memcached pluginを使ってみる

MySQL 5.6の RC 版が出ましたね。魅力的な機能が満載で皆さんwktkしていることと思います。早速、個人的に気になっていた memcached plugin を試してみました。最初に結論から言いますが、現時点 (5.6.7rc) では HandlerSocket の代わりに使えるようなもので…

YAPC::Asia 2012で「Webアプリケーションのベンチマークとプロファイリング」を発表しました

Perlのお祭りYAPC::Asia、今年もフルに参加して楽しんでいます。初日のLT前に「Webアプリケーションのベンチマークとプロファイリング」というタイトルで発表しました。発表資料はこちらです。 Webアプリケーションのベンチマークとプロファイリング今回の発…

zabbixでiptablesが有効になっているかどうかを検出する

iptables、便利ですが必要のないホストで有効になっていると困りますね。特に conntrack が適切に設定されていない状態で有効になると、流量が多くなった時にテーブルが溢れてパケットが捨てられてしまいます。厄介なことに、状態を確認しようと思って迂闊に…

RedisをKeepalivedでフェイルオーバーする構成案

master slave 構成を取っている Redis で、master が落ちた場合に slave を昇格させてフェイルオーバーしたいという要件がありまして、Keepalived と組み合わせて構成してみました。Redis の運用経験がないのでご意見などいただければありがたいです。 Scien…

ロードアベレージを監視して任意のコマンドを実行する(monitで)

他に似たツールがあれば教えて欲しいです ロードアベレージを監視して任意のコマンドを実行するコマンド - blog.nomadscafe.jp いままで使ったことはなかったのですが、monit でできるはず、と思って実験。一般的には、負荷が上がったりプロセスが応答しなく…

libvirt-0.9.10 にバージョンアップして 0.8.7 に戻したら起動しているVMが認識できなくて困った

Scientific Linux 6.0 で KVM + libvirtd で仮想環境を構築していて、libvirt-0.8.7-18.el6_1.1.x86_64 → libvirt-0.9.10-21.el6.x86_64 に update したところ、libvirtd が起動時に Segmentation falt するという現象に遭遇。 Caught Segmentation violatio…

chef-solo + capistrano で複数ホストを管理する

chef-server は仕組みが大げさでインストールも大変だし、10〜20台ぐらいなら chef-solo と capistrano を組み合わせればいいよね?(同案多数) Capistranoとchef-soloを組み合わせて使う | ひげろぐ capistrano + chef-soloで構成管理する - delirious tho…

capistrano で引数から設定した値が定義済みかどうか確認する

capistrano でコマンドラインから値を渡すのに -S foo=bar のようにしますが、この値が定義されているかどうかを確認したくて defined? してみたものの常に未定義になる。でも値は取れる。 # config/deploy.rb if defined? foo puts "foo is defined. foo=#{…

[perl] リクエスト処理前後のメモリ使用量を調べる Plack::Middleware::GTop::ProcMem を書いてみた

https://github.com/fujiwara/Plack-Middleware-GTop-ProcMemPlack アプリケーションが、どれかの処理でメモリを使いすぎてプロセスが太るらしい。でもそれがどのURLを処理したときなのかが分からない、という場合にこんな Middleware を使えば調べられるか…

Monitoring Casual Talk #1 で im.kayac.com の話他をしてきました

同僚の @kenjiskywalker が運用と監視の勉強会をしたい!といいだして、でも弊社には外部の人を呼んで勉強会ができる適当な場所がないなあと悩んでいたら @oranie さんと @masudaK さん、@nakashii_ さんが会場を提供していただけるということで、とんとん拍…

cron で > /dev/null して椅子を投げられないための3つの方法

(タイトルは釣りです)いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルが twitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いな…

munin-node → Fluentd → GrowthForecast でオレオレモニタリングツールへの道?

できるかなと思って、とりあえず繋げてみたのでメモ。中途半端。 munin-node → Fluentd munin-ruby で取得した値をまるごと fluentd に送信するスクリプトをcronで1分ごとに実行。 #!/usr/bin/env ruby require "munin-ruby" require "fluent-logger" host =…

標準入力から読んでFluentdに送信するにはfluent-agent-liteが便利

標準入力から受けたログを syslog に送信する場合に使えるのが logger(1) コマンドです。 $ echo "log message" | logger -t myapp -p local0.info自分のところではバッチ処理の出力や、daemontools で起動したコマンドの出力を log/run で logger に渡して …

[fluentd] #Fluentd Casual Talks で「fluentdでWebサイト運用を楽にする」話をしてきました

id:tagomoris さんにお声がけいただきまして、Fluentd Casual Talks にて「fluentdでWebサイト運用を楽にする」というタイトルで発表させていただきました。発表資料はこちら 主催者の id:tagomoris さん、会場を提供していただいた DeNA 様、いろいろ準備を…

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] …

[perl] Class::Method::Modifiers で WWW::Mechanize の送信するリクエスト内容をロギング

WWW::Mechanize がどんなリクエストを送っているのか、をログに出力してデバッグに使いたいという話。Class::Method::Modifiers を使って、LWP::UserAgent::send_request を hook してあげるとうまくいった。(WWW::Mechanize は LWP::UserAgent の子クラス) …

#fluentd で maillog を読み込んで MongoDB に投入

MTA が吐く maillog は普段あまり見ないのだけど、トラブルがあったときには大変重要。これも Mongo に入れれば、問い合わせがあったアドレスで検索してログを管理画面で見るとかできて便利!ということでやってみた。 # fluentd.conf <source> type tail path /var/</source>…

[nginx] nginx で upstream を active backup 構成

nginx で振り分けるのに、いままで自分の作った構成だと backend はすべて active でロードバランスしてたけど、都合により active-backup 構成にしたくて調べたら簡単だった。一応メモ。HttpUpstreamModule - Nginx Community backup - (0.6.7 or later) on…

[perl] コマンドラインから Day One に投稿する

最近 Day One ってメモアプリが人気なんでしょうか。便利ですよね。とりあえず Dropbox 同期している場合限定ですが (iCloud の仕組みをよく知らない)、コマンドラインから投稿するスクリプトを書いてみました。 $ perl dayone.pl 標準入力からテキストを入…

Parallel::Benchmark というモジュールを書きました

プロセスを並列に立ち上げて負荷を掛けるようなベンチマークを実行することって、よくありますよね。(例 : クエリキャッシュを切ったほうがいイカ? ベンチマークしてみた - 酒日記 はてな支店)Perl で Parallel::ForkManager を使うとそういう処理も簡単に…

warn() で吐かれるログを捕まえて投げる

Perl では $SIG{__WARN__} という疑似シグナルハンドラを使って、warn() で出力されようとする内容をトラップして処理することができます。 package MyWorker; my $logger = Fluent::Logger->new; sub work { my $job = shift; local $SIG{__WARN__} = sub {…

Perl から Fluentd にログ出力 - Fluent::Logger リリース

皆さん、ログ書いてますか!?(挨拶)Fluentd meetup in Japan も開催間近、最近大変熱いイベントログ収集システム Fluentd なわけですが、Perl からログを出力する Fluent::Logger というモジュールを CPAN にリリースしたのでお知らせします。 (最初の版は …