タグ

ブックマーク / hirose31.hatenablog.jp (23)

  • Apache 2.4.1 で気になった新機能などのメモ - (ひ)メモ

    Overview of new features in Apache HTTP Server 2.4 - Apache HTTP Server Expressions http://httpd.apache.org/docs/2.4/en/expr.html やSetEnvIfExpr, RewriteCond, Headerで使える評価式 の追加 http://httpd.apache.org/docs/2.4/en/mod/core.html#if ヘッダや環境変数を参照して細かい制御ができるようになったことに加え、else的なブロックを書くのに苦労したことがあるんで朗報です ErrorLogFormat http://httpd.apache.org/docs/2.4/en/mod/core.html#errorlogformat ErrorLogも書式設定できるように。 %L (L

    Apache 2.4.1 で気になった新機能などのメモ - (ひ)メモ
  • WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ

    だいぶ前の記事(2007/04〜2008/2の連載記事)ですが、WEB+DB PRESSで連載していた拙著の『スケーラブルWebシステム工房』の記事を公開しました。ふと、思い出したので。 連載目次 第1回 いろんなものをロードバランス ― MySQL、SMTPサーバ… 第2回 DRBDとkeepalivedで、障害性の高いストレージサーバの構築 第3回 監視にまつわるエトセトラ 第4回 LinuxとVLANで作る、シンプル&スケーラブルネットワークの極意 第5回 止まらないネットワークの極意 ― bonding × リンクアグリゲーション × スパニングツリー 第6回 見逃さない通知の極意 これらの文書は、ソフトウエアの名称、バージョン、設定項目、社名などの固有名詞などなどは当時のまま掲載しています。 ですので、インストール手順や設定内容は最新版のドキュメントを参照していただき、この文書か

    WEB+DB PRESS連載の『スケーラブルWebシステム工房』の記事を公開しましたっ! - (ひ)メモ
  • memcachedに張られているコネクション数を監視するNagios pluginを作ってみた - (ひ)メモ

    夏休みが終わったので宿題しました。(小ネタはありません) http://github.com/hirose31/nagios-check_memcached_connections 要 libmemcached こんな感じで。 $ ./check_memcached_connections -H mc101 -w 3 -c 5 MEMCACHED WARNING: conn 5, 0.001 seconds あわせてよみたい mixi Engineers’ Blog » mixi大規模障害について その2

    memcachedに張られているコネクション数を監視するNagios pluginを作ってみた - (ひ)メモ
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

    目的 フロントがHTTPリクエストを受けて、バックエンドのアプリケーションサーバにreverse proxyするような構成において、指定秒数以内に何かしらのレスポンスを返したい。 200が返せない場合は、処理を打ち切って500を返したい。 背景 フロントでApacheやNginxをreverse proxyとして使っている場合、バックエンドが無応答になってしまうと、クライアントにレスポンスが返るのはデフォルトで数十〜数百秒後(ApacheのTimeoutのデフォルトは300秒、Nginxのproxy_read_timeoutのデフォルトは60秒)になってしまいます。 通常のWebサービスではこのオーダーのタイムアウトでもいいのかもしれませんが、数秒以内に(エラーでもいいので)レスポンスを返すことが求められる環境も存在します。(最近、特に多いのではないでしょうか:P) もちろんバックエンドが

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
  • 実録MySQLのチューニング 春の陣 - (ひ)メモ

    long_query_time = 0.5 とか閾値を小さめにしてもスロークエリが出なくなったけど、CPU(user)使用率高いとか、なんか足引っ張ってるクエリがあるっぽいなぁという場合のお話です。 「実録」の通り、現在絶賛進行中ですので、逐次動きがあったら書き足していくつもりです。 「あれを見た方がいい」とか「これをあーした方がいい」とかあれば、コメントかTwitterで @hirose31 までお知らせいただけるとうれしいです! 使用しているのは、MySQL 5.1.41 です。 前提: サーバーリソースのグラフ GangliaでもCactiでもMuninでもなんでもいいんですが、サーバリソースのグラフ化は必須です。チューニングした際の効果測定や、そろそろリソースい潰してやばいとかの予測にも使えます。 自分はDBサーバの場合このあたりをグラフ化してます。 CPU使用率 (user,

    実録MySQLのチューニング 春の陣 - (ひ)メモ
    kuni92
    kuni92 2010/05/19
  • IPアドレスブロックを集中管理する方法と、その活用法 - (ひ)メモ

    やりたいこと 携帯3キャリアのIPアドレスブロックは比較的頻繁に変わるので自動更新したい 自宅やオフィスその他のIPアドレスは、変わることがあまりないので手動管理でいい これらIPアドレスブロックの情報は、後述する通りいろいろなところで使いたい 即ち、いろいろな形式で表現したい このように、頻度の差こそあれ、IPアドレスブロックは増減したり新しいブロックが追加したりするので、簡素な機構で包括的な管理をしたい。 実現方法 スクリプトを2つ書きました。いずれもgithubにあります。 http://github.com/hirose31/cidr-manager 図も用意しました。 update-mobilejp-cidr キャリアのサイトをスクレイピングして、指定されたディレクトリにその情報を書き出します。 その形式は、1行1アドレスブロック、コメントは "#" です。 $ cat plai

    IPアドレスブロックを集中管理する方法と、その活用法 - (ひ)メモ
  • MySQLで、指定したときだけクエリキャッシュする - (ひ)メモ

    今までMySQLのクエリキャッシュはは有効にしてたんですが、Webサービスだとキャッシュヒットするようなクエリはそんなに多くないし、どこかで見かけたんですが(失念…)クエリキャッシュをオフにしたら(逆に)パフォーマンスが上がっただか負荷が下がっただかというのも目にしたので、今度クエリキャッシュはオフにしようと思ってました。(どのみちヒット率悪いし) そんなとき、同僚に query_cache_type を教えてもらいました。(4.0からあるオプションなのに今まで知りませんでした。。。><) http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_query_cache_type てっきりクエリキャッシュはオンかオフかしかできないと思い込んでたんですが、"DEMAND" を指定すると、「原則キャッシ

    MySQLで、指定したときだけクエリキャッシュする - (ひ)メモ
    kuni92
    kuni92 2010/04/07
  • kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ

    分散Key-Valueストア「kumofs」を公開しました! - 古橋貞之の日記 \(^o^)/ kumofsは、弊社のフォトストレージサービス Ficia で現在大絶賛モリモリ稼働中なんですが、その死活監視は自家製の Nagios プラグインで行っています。 というわけで、kumofsをサービスで使いたい人の一助になればと思い、ぼくが実際に行っている kumofs の監視について紹介したいと思います。 サーバノードとマネージャノード サーバノードとマネージャノードの監視には、それぞれのノードに対してステータスを問い合わせるコマンドを発行して、その応答で死活を判断するスクリプトを書いて使っています。 kumofs公開記念ということでgithubにpushっておきました。 http://github.com/etolabo/nagios-check_kumofs 問い合わせの処理は、管理用コ

    kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ
  • 実録、ほぼ無停止なMySQLのフェイルオーバ (動画もあるよ) - (ひ)メモ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン でも掲げたゴールである、「マスタが落ちてもぐーすか寝ていられるようにしたい」がほぼできたので、ほとんどサービスが停止することなく、フェイルオーバする様をスクリーンキャストに収めました。 埋め込みプレイヤーだと、小さくてわからないと思うので、リンク直接でみてください。 http://www.irori.org/pub/mysql-mm.mov 登場するホスト 登場するホストは2台、db901db902です。 最初は、db901が更新系クエリを受けるプライマリでdb900の浮動IPアドレスを持っています。 画面分割 画面は5分割しています。 左上 = 「select sysdate(),@@server_id」をdb900に対して(sleep 1しながら)延々と実行しまくりんぐ 右上 = ping -n

    実録、ほぼ無停止なMySQLのフェイルオーバ (動画もあるよ) - (ひ)メモ
    kuni92
    kuni92 2009/11/13
  • keepalived.confのシンタックスチェックツール「keepalived-check」「haskell-keepalived 」が凄い! - (ひ)メモ

    id:viverさんとid:maoeさんが(7月ぐらいに)やってくれてました。 http://github.com/frsyuki/keepalived-check http://github.com/maoe/haskell-keepalived ずいぶん前からkeepalived.confのシンタックスチェックをするプログラムないかなーと思ってました。個人的にはバックアップ側のkeepalivedにまず反映して問題がないならマスタにも反映する、という運用手順をとっていますが、はやりsyntax checkerがあるのとないのとでは安心感が大違いです。 また、構築フェーズでは、keepalived.confをあれやこれやといじり試行錯誤するわけですが、confの書式が間違っていてもkeepalivedは警告も出さずスッコリなかったものとして知らん顔で起動するので、「設定してるはずの通りに

    keepalived.confのシンタックスチェックツール「keepalived-check」「haskell-keepalived 」が凄い! - (ひ)メモ
  • keepalived と 当ててるパッチたち - (ひ)メモ

    今使ってるのは 1.1.17 、その前に使ってたのは 1.1.15 す。 keepalived 1.1.19 1.1.19ではpidfileとnopreemptパッチは取り込まれているので、 keepalived-1.1.13-extcheck-1.0.patch だけ当てています。 keepalived 1.1.17 keepalived-1.1.13-extcheck-1.0.patch DSASさんところのヘルスチェック拡張パッチです。ふふ。DNS_CHECKとSSL_HELLOを使ってます。 ちなみに、このパッチを当てないで DNS_CHECK とか SSL_HELLO を使うと、keepalived.confにreal_serverを複数書いているにも関わらず、ipvs的には1つしか有効にならないという不思議状態になりますので、バージョンアップのときとかにはパッチ当て忘れないよう

    keepalived と 当ててるパッチたち - (ひ)メモ
  • bashのhistoryに時刻を表示する - (ひ)メモ

    追記: HISTTIMEFORMATが使用可能なbashのバージョンを明記。あざーっす> id:kdaiba bash 3.0から(2.05bを含んでそれより以前のはダメ)使用可能なHISTTIMEFORMATという環境変数を使うと、ヒストリに時刻も記録できると同僚に教えてもらた。これは便利。 $ HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTTIMEFORMAT $ man ci $ man co $ shutdown now && echo nigeteeeee | wall && shutdown -c $ history 1 2008-01-17 15:42:48 HISTTIMEFORMAT='%Y-%m-%d %T '; export HISTTIMEFORMAT 2 2008-01-17 15:42:52 man ci 3 2008-01

    bashのhistoryに時刻を表示する - (ひ)メモ
    kuni92
    kuni92 2009/06/11
  • Nagiosのcheck_snmpで警告レベル(WARNING, CRITICAL)別に通知先を変えたい - (ひ)メモ

    やりたいこと 警告レベル (WARNING か CRITICAL) によって、通知先を切り替えたい。 WARNING は PC メールと IRC に CRITICAL は 携帯メールと PC メールと IRC に 外部ホストの監視は NRPE じゃなくて SNMP (check_snmp) を使っている。 通知先の切り替え なぜか warn と crit で contactgroup を別々にせねばという思い込みがあり、単一のservice定義では実現できなさそうと思ってたんですが、ひとつのcontactgroupに、service_notification_optionsがwのとcのcontactを入れとけば OK ですね。(thanks: @toshiak_netmark) unknownとcriticalは携帯+PCIRCに、それ以外はPCIRCに通知するようなcontact,

    Nagiosのcheck_snmpで警告レベル(WARNING, CRITICAL)別に通知先を変えたい - (ひ)メモ
  • NagiosからのアラートをIRCにも通知してみた - (ひ)メモ

    Nagiosのアラート通知をメールだけじゃなくてIRCにも通知したいなぁと思ったのでやってみました。 IRC bot 今までだと Plagger 付属の plagger-ircbot を走らせて、適宜 POE の IKC で通知命令を送っていたんですが、ちょっと CPAN を探してみたら、 Bot::BasicBot::Pluggable というのがありました。 karmaもつけられていいなーと思ってこれを使おうと思ったんですが、POE を使っているものの IKC で連携する機能がありません。 そこでこのモジュールを継承して、Bot::IKCBot::Pluggable というのを作りました。 http://github.com/hirose31/p5-bot-ikcbot-pluggable/tree/master Bot::IKCBot::Pluggable BasicBotとの違いは

    NagiosからのアラートをIRCにも通知してみた - (ひ)メモ
  • tcpdumpとiptablesの関係 - (ひ)メモ

    追記 2009-04-03 まったくもってブコメでいただいた指摘の通りです>< h2onda linux, tcpdump tcpdump(というかlibpcap)は、データリンク層(OSI layer2)レベルでパケットを取得する packet プロトコルを使ってるので、そうなります。参照: man packet(7) 2009/04/02 はてなブックマーク - h2ondaのブックマーク / 2009年4月2日 tt_clown network 細かいけど,図は逆(NIC が下)のが良いかなと思った./ "ip"tables と言う位だから,IP層でパケットをフィルタしてるて事だろうな.tcpdumpはEthernet Frameも見えるので,後は分かるな?・・・てとこか. 2009/04/02 はてなブックマーク - tt_clownのブックマーク / 2009年4月2日 pack

    tcpdumpとiptablesの関係 - (ひ)メモ
  • mod_log_rotate がよさげかも - (ひ)メモ

    mod_log_rotate のススメ で紹介されていた mod_log_rotate がよさげです。 http://www.hexten.net/wiki/index.php/Mod-log-rotate ドキュメントには書いてない(と思う)んですが、CustomLogのファイル名にstrftimeの書式指定が使えるようになります。 ついでに、rotatelogs より cronolog の方がフットプリントが小さそうなので、ErrorLogcronologを使うようにしてみました。 before ErrorLog "|/usr/local/bin/rotatelogs /var/log/httpd/irori.org/www.err.%Y-%m-%d 86400 +540" CustomLog "|/usr/local/bin/rotatelogs /var/log/httpd/ir

    mod_log_rotate がよさげかも - (ひ)メモ
  • 慣習を気にせずsyslog-ngの設定をしてみた - (ひ)メモ

    たいていのsyslogのデフォルトの設定だと、 同じログが結構な量、複数のファイルに記録されて(IO負荷的、ディスクサイズ的に)無駄だなぁ 日付のフォーマットが機械処理しづらいなぁ ローテートがめんどいなぁ と思ってたので、今つくってる環境では慣習を気にせずに syslog-ng (v2.0.9) の設定をしてみたのでそのメモです。 不要なログは記録しない options { ... mark_freq(0); stats_freq(0); ... } 日付の形式を変える options { ... ts_format(iso); ... }これで、こんなの Dec 19 16:44:20 HOST ...から、こんなの 2008-12-19T14:07:52+09:00 HOST ...に変わります。 facilityごとにわける facilityごとのfilterを作る。 destic

    慣習を気にせずsyslog-ngの設定をしてみた - (ひ)メモ
  • mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ

    追記: rehash(auto-rehashも含む)すると、SQL文の補完(seleでタブ打鍵とか)が効かなくなるよと、はす向かいの人に教えてもらいました。 個人的には、SQLは「mysql> help select」とかでオンラインヘルプがびょっと出るので、スキーマの補完ができるんならSQLの補完はとりあえずあきらめてもいいかなと思っています。 常々、テーブル名とか補完できるといいなーと思っていたので、ボロっときいてみたら教えてもらいました。あざーーーーっす! id:mikihoshi++ id:tokuhirom++ id:precuredaisuki++ おかげで効率が300%上がりました。(Benchmark::Stopwatchで計測) http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html#option

    mysqlコマンドで、テーブル名とかカラム名の補完(completion)をする方法 - (ひ)メモ
  • SSHサーバが受け付けている認証方法を調べるPerlモジュール - (ひ)メモ

    を、CPANに上げしました。 Net::Scan::SSH::Server::SupportedAuth 予め Math::BigInt::GMP をインストールしておくのをお勧めします。じゃないと、Net::SSH::Perl (が使っている Crypt::DH) が遅くて、まともに使えませんので。 このモジュールは、SSH protocol 1と2のそれぞれについて、どの認証方法(パスワード認証か鍵認証か)が受け付け可能か調べるためのものです。 アーカイブには、sample/scan-sshauth.pl というサンプルスクリプトもあるので、モジュールをインストールすれば、コードを書かずとも試してみることができます。 ちなみにこのサンプルスクリプトは、 ホストIPアドレス CIDR に対して調査できるので、出力などは用途にあうようにアレンジして、 外部にさらしているサーバたち イン

    SSHサーバが受け付けている認証方法を調べるPerlモジュール - (ひ)メモ
  • 「ディスク」への書き込み性能を上げるには - (ひ)メモ

    ユーザランドのプロセスから見たwrite(2)は、ページキャッシュのおかげで(メモリが潤沢にある環境下では)ブロックされない(待たされない)というのは id:naoya さんの丁寧な解説のおかげでわかると思うのですが、一方、fsync(2)などの実際にディスクに書き込む処理、 あと id:hirose31 さんがコメントしてますが、アプリケーションが SYNC モードでファイルを開いてたり、明示的に fsync() してたりするとそこで wait が発生するのは言わずもがな、です。 Linux I/O のお話 write 編 - naoyaのはてなダイアリー The fsync() function does not return until the system has completed that action or until an error is detected. fsync

    「ディスク」への書き込み性能を上げるには - (ひ)メモ