タグ

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

  • たくさんのホストにpingするのに便利なツールpingerを書きました - (ひ)メモ

    たくさんのホストにpingするのに便利なツールpingerをgoで書きました。 https://github.com/hirose31/pinger こちらから Linux, macOS, Windows 用のバイナリがダウンロードできるので是非お試しください。(手元に環境がないのでWindowsでは動作確認していません) https://github.com/hirose31/pinger/releases メンテナンス時、特にネットワーク関連のメンテには、多数のホストへの到達性をモニタリングしがら作業したいことがあると思いますが、(自分が知ってる限りの)既存のツールでは一覧性がよいものがなかったのがこのpingerを書いた動機です。 pingerを実行すると、このように上部には指定したホストの状況を2カラムで表示し、下部に失敗したホストの履歴を表示するので、現在の状況(上部)と過去の状

    たくさんのホストにpingするのに便利なツールpingerを書きました - (ひ)メモ
  • マルチスレッドでgetaddrinfo(3)するとたまに Temporary failure in name resolution (EAI_AGAIN) で失敗する件 - (ひ)メモ

    マルチスレッドでgetaddrinfo(3)するとたまにTemporary failure in name resolution (EAI_AGAIN) で失敗します。 自分は↓な環境で確認しました。 CentOS 6.5 glibc-2.12-1.149.el6_6.5 こういうコードで再現します。(ruby 2.1.4で確認) なお、便宜的にrubyで再現コードを書いていますが、該当環境であれば言語問わずマルチスレッド+getaddrinfo(3)の組み合わせで発現する問題です。 対処法は、 glibc glibc-common glibc-devel glibc-headers nscd のrpmをCentOS 6 Updatesにあるバージョン 2.12-1.149.el6_6.9 のに上げればOKです。 ちなみに自分は、Chef実行時にたまにberksのAPIサーバーの名前が引け

    マルチスレッドでgetaddrinfo(3)するとたまに Temporary failure in name resolution (EAI_AGAIN) で失敗する件 - (ひ)メモ
  • keepalivedのnb_get_retryの動きが不思議な#2 - (ひ)メモ

    keepalivedのnb_get_retryの動きが不思議な件 の続き。 今回は keepalived 1.1.17 で試してみたす。 ヘルスチェック (HTTP_GETの場合) のループ間隔に関係ありそうな設定項目はこの3つ。 virtual_server group delay_loop (delay timer for service polling) real_server HTTP_GET nb_get_retry (number of get retry) delay_before_retry (delay before retry) コードレベルじゃなくて実験観察結果ですけど、まとめるとこんな感じ: ┌─────────┐ │ ↓ │ delay_loop │ ↓ │ CHECK (最大connect_timeout) │ Enable ↓ Disable │ <成功>──

    keepalivedのnb_get_retryの動きが不思議な#2 - (ひ)メモ
    takatoshiono
    takatoshiono 2016/04/26
    大変参考になりました
  • IRCのメッセージ装飾 - (ひ)メモ

    某所ではずかしい言葉を連呼してしまったのでそのお詫びにw mIRCの色装飾のコントロールコード ^B (0x02) 太字 ^_ (0x1f) 下線 ^V (0x16) 反転 ^O (0x0f) 装飾クリア rieceだと色設定の初期値がちょっとアレなので、~/.riece/init.elあたりで補正。 (custom-set-variables '(riece-ctlseq-hide-controls t) '(riece-ctlseq-colors '("white" "black" "DarkBlue" "DarkGreen" "red" "maroon" "purple" "orange" "yellow" "green" "DarkCyan" "cyan" "blue" "magenta" "gray" "DimGray" )))コントロールコードも表示したい場合は、riece-c

    IRCのメッセージ装飾 - (ひ)メモ
  • combinedに代わるオレ流ログフォーマット - (ひ)メモ

    こんにちは、combinedログ撲滅委員会のひろせです。 ApacheのcombinedやNginxのデフォルトのlog_formatは、機械処理(日付でのソートやパース)がしづらい上に、人の目にもあまり見やすいフォーマットとはいえないと思っています。 なので自宅のサーバーでは、 日付は ISO8601 にする sortコマンドとかで簡単にそぉーっとソートできるようになる 日付、レスポンスコード、所要時間とか固定長的なフィールドは左に寄せる URLとかUAとか可変長で長いのは右に寄せる リクエスト(%r)も右に寄せた方ががいいような気がしてきた。。。 数値だけだとわかりづらいのでなんとなくわかるようにフィールド名も添える フィールド名を長くするとわかりやすくなる反面、ログサイズが大きくなるので注意 という観点で次のようなログフォーマットにしています、 # Apache LogFormat

    combinedに代わるオレ流ログフォーマット - (ひ)メモ
    takatoshiono
    takatoshiono 2012/12/15
    いいとおもう
  • dstatの万能感がハンパない - (ひ)メモ

    サーバーのリソースを見るにはグラフ化は重要ですが、推移ではなくリアルタイムな状況、例えば秒単位のスパイキーな負荷を見るには、サーバー上でvmstatやiostatなどの*statファミリーを叩く必要があります。 さて、vmstatはメモリの状況やブロック数単位のI/O状況は見られますが、バイト単位のI/O状況やネットワークの送信、受信バイト数を見ることはできません。 # vmstat 1 procs -----------memory---------- ---swap--- -----io----- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 3 1 0 4724956 355452 726532 0 0 54 484 3 3 1 0 99 0 0 2 0 0 47

    dstatの万能感がハンパない - (ひ)メモ
  • 前月を知る - sh編 - (ひ)メモ

    shっていうかdateコマンドですけど。 安直に「1 month ago」でいいじゃん!と思った人は負けです(ぼくもですけど><)。 これはいいんだけど、 $ date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-09-16 18:05:00.342008278 2010-08-16 18:05:00.344293593 このケースだと前月になってない # date 053100002010 >/dev/null; date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-05-31 00:00:00.000000000 2010-05-01 00:00:00.004000016set $(date '+%Y %m') y=$1

    前月を知る - sh編 - (ひ)メモ
  • フロント/バックの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のチューニング 春の陣 - (ひ)メモ
  • Amazon EC2シンガポールを含む、ping RTTやhttpingの計測グラフ - (ひ)メモ

    計測元は、都内のBフレッツでISPはライブドアプロバイダ。 計測とグラフ描写のコードはここに: http://github.com/hirose31/monitor-latency グラフは、紺色の線がレイテンシの平均値で、水色の範囲は最小値と最大値。 ping RTT まず、ホットなシンガポールのEC2。このグラフだけ、表示期間が1日分。だいたい90msecぐらいですね。 続いてEC2のwestとeast。この2つだけ、計測期間がちょっと古くて2010/3/27のもの。 Amazon EC2 アメリカ西海岸 125msec Amazon EC2 アメリカ東海岸 200msec あとはいろいろ。 ニフティクラウド Google JPIX はてなブックマーク 都内某iDC httping データは httping -c 10 -i 0.7 -r -g TARGET_URLの結果の最小値、平均

    Amazon EC2シンガポールを含む、ping RTTやhttpingの計測グラフ - (ひ)メモ
  • daemontoolsのrunファイルで、exec COMMANDじゃなくてshを介してexec sh -c 'exec COMMAND'する理由 - (ひ)メモ

    だいぶ昔になんでかなーなんでだろーなーと思ったこと: dnscache-confで作ったrunファイルが、 #!/bin/sh exec 2>&1 exec <seed exec envdir ./env \ envuidgid dnscache softlimit -o250 -d "$DATALIMIT" /usr/local/bin/dnscache じゃなくて、こんなふうに、 #!/bin/sh exec 2>&1 exec <seed exec envdir ./env sh -c ' exec envuidgid dnscache softlimit -o250 -d "$DATALIMIT" /usr/local/bin/dnscache ' わざわざshをexecして、そのshのなかでお目当てのプログラムを起動してたこと。 で、今日、某IRCチャンネルみてて気がついたんです

    daemontoolsのrunファイルで、exec COMMANDじゃなくてshを介してexec sh -c 'exec COMMAND'する理由 - (ひ)メモ
  • ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ

    ぼくは長年こういう方法で管理してますよ、というお話です。Linuxです。 ディレクトリレイアウト概観 たとえば、asoとbmdという名前のソフトウエアをインストールしている状態はこんな感じ: /usr/local/ ┬ app/ ┬ aso → aso-1.3 │ ├ aso-1.2/ ┬ bin/ ┬ armored │ │ │ └ scrum │ │ ├ sbin/ ─ syd │ │ └ share/ ─ man/ │ ├ aso-1.3/ ┬ bin/ ┬ armored │ │ │ └ scrum │ │ ├ sbin/ ─ syd │ │ └ share/ ─ man/ │ ├ bmd → bmd-2.0 │ └ bmd-2.0/ ┬ bin/ ─ tri │ ├ include/ ─ angle.h │ └ lib/libsnk.so.2.0.0 ├ bin/ ┬ armor

    ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ
  • レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ

    MySQLで、レプリケーションベースのHAな構成について考えたメモです。 3台(というか2台+1台)がいいかなぁと思っていて、前半はその理由を、後半では{マスタ,スレーブ}が{再起不能になった,ちょっとダウンしてすぐ復帰した}場合のリカバリプランについて書きます。 今のところはこれがベストかなと思っているのですが、「こうしたほうがいいと思う!」「ここがおかしい!」などなどのご意見はコメント、TBなどでいただけるとうれしいです。 ゴール マスタが落ちてもぐーすか寝ていられるようにしたい リカバリの作業はできるだけ単純に、かつ、短時間で完了するようにしたい めんどくさいのはいや 基構成、方針 2台+1台 サービスで使うのは2台 (db1, db2) もう1台は管理用 (db3) スレーブを多数並べる構成にはしない 台数増えると管理コストが上がる マスタダウン時のフェイルオーバとそのフェイルバ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ
  • 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の関係 - (ひ)メモ
  • シンタックスハイライトするフィルタてないかな - (ひ)メモ

    シンタックスハイライトするフィルタてないすかねー 標準入力に色(ANSI color)つけて標準出力に出すだけのやつ。 view(vim)が出力して終了してくれればいいんだけど。。。 $ colorize < filename | less -Rとか $ crontab -l | colorize | less -Rとかしたい。 で、最終的にはLESSOPENで使いたい。 追記#1 PerlText::VimColorとTerm::ANSIColorでフィルタ書いたす。 $ colorize < httpd.conf | less -R $ crontab -l | colorizeLESSOPENで呼ばれるlesspipe.shをいじって必ずcolorizeでフィルタするようにしたら、ながーいファイルだとcolorizeの処理に数秒かかってイラっとしたのでこれはやめました。 その代わり

    シンタックスハイライトするフィルタてないかな - (ひ)メモ
  • 離れたところからGrowlで通知 - UDPのパケットをSSHでポートフォワードする方法 - (ひ)メモ

    Growlに、LANの外のマシンから通知リクエストを投げたい。 Growlは、リモートから通知リクエストを受ける機能がある。 UDPの9887番ポートを使用 が、Growlが動いているマシンと通知リクエストを行うマシンは、それぞれ異なるLANに属していて、直接通信できない。 そんなときお手軽便利なのは、SSHのポートフォワード。これでずるっとトンネルを開通すればいい。 が、TCPのパケットしかポートフォワードできない。 stoneにはUDPとTCPとを相互変換する機能があるらしい。 仙石浩明の日記: stone に UDP ⇔ TCP 相互変換機能を実装 少なくともstone-2.3dではこの機能が実装されている。(stoneのサイトからダウンロード可能) というわけで、 発信側のマシン Net::Growlとかで発信 stoneでUDPをTCP化 SSHのポートフォワード 受信側のマシン

    離れたところからGrowlで通知 - UDPのパケットをSSHでポートフォワードする方法 - (ひ)メモ
  • Pure PerlなHTTPdを物色 - (ひ)メモ

    HTTP::Daemon forkしないので、1個詰まると後続のリクエストは待たされる。 HTTP::Simple::Server デフォルトではforkしない。 HTTP::Simple::Server + Net::Server::Fork forkするので多重化可能。が、リクエストごとに新しいプロセスをforkしちゃう。 HTTP::Simple::Server + Net::Server::PreFork forkするので多重化可能。pre-forkするのでプロセスは使いまわせる。 Net::HTTPServer type=>'forking'でpre-forkする。 URLのパスと関数をマッピングできるのもよさげ。 PerlBal Danga::Socketベースなので、IO多重化(epollとか)な実装。(だと思うす) POE::Component::Server::HTTP

    Pure PerlなHTTPdを物色 - (ひ)メモ
  • 第3のmemcachedクライアントライブラリ (C言語) - (ひ)メモ

    C言語のmemcachedクライアントライブラリは、 apr_memcache libmemcache の2種類が存在していたのですが、第3のライブラリがリリースされたようです。 libmemcached So why implement another C client library? (since that is the first question I expect some one to ask) 1) The libmemache library I was using for a while for the MySQL memcached storage engine leaks memory and after toying with it I decided I didn't want to fix it. 2) The APR one has the drawback

    第3のmemcachedクライアントライブラリ (C言語) - (ひ)メモ
  • bashでターミナルのタイトルを動的に変える方法 - (ひ)メモ

    ターミナルのタイトル部に「ホスト名:カレントディレクトリ」と表示する方法。こんな感じに。 もちろん、カレントディレクトリの部分は動的に変わる。 やり方は、~/.bashrcでこんなふうにすればOK。 case $TERM in kterm|xterm|mlterm|cygwin|vt102) _termtitle="\h:\w" PS1="\[\e]0;${_termtitle}\007\]${PS1}" ;; esacなぜか検索するとそういう例が多いのですが、環境変数PROMPT_COMMANDで、hostnameコマンドとかpwdコマンドとか使うよか、このようにPS1で\hとか\wを使った方が効率いいと思います。(プロンプト表示するたんびにコマンドを実行するわけではないので) エスケープシーケンスの意味は Bash Prompt HOWTO: Xtermのタイトルバーの操作 Xterm

    bashでターミナルのタイトルを動的に変える方法 - (ひ)メモ
  • ムック『超・極める!MySQL』に寄稿しました - (ひ)メモ

    超・極める!MySQL 作者: 坂井恵,志村和彦,ひろせまさあき,松信嘉範出版社/メーカー: 翔泳社発売日: 2006/10/04メディア: 大型購入: 2人 クリック: 24回この商品を含むブログ (15件) を見る もうすぐ(10/4)発売されるこのムックに何か記事を書きました。 目次は、超・極める!MySQLSEshop.com/商品詳細で見られます。 Plugin Interfaceにとって代わられるのが宣言されているUDFはともかく(w、手前ミッソーながら監視系の記事はおいしいと思いますので、是非、ご賞味くださいませ。 MySQLがらみでついでに。↓の書籍はかなりいい情報がつまってるので、MySQLいじってる向きは必読す。 現場で使える MySQL (DB Magazine SELECTION) 作者: 松信嘉範出版社/メーカー: 翔泳社発売日: 2006/03/17メディ

    ムック『超・極める!MySQL』に寄稿しました - (ひ)メモ
  • 1