タグ

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

  • RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ

    Redis は基的にシングルスレッド、イベントドリブンモデルなので、時間のかかるLua スクリプトを実行したらどうなるかというのは想像に難くないのですが確認してみました。 Redis は 2.6.14 です。 redis-cli eval 'while true do print("hello") end' 0な感じのを実行します。 実行中に、別クライアントから GET, INFO, PING すると全てブロックされて結果が返ってきません。 redis.conf で lua-time-limit 5000 と設定している場合は、5秒後に redis-server のログに [18068] 22 Jul 13:51:23.798 # Lua slow script detected: still in execution after 5000 milliseconds. You can t

    RedisのLuaで時間のかかる処理をするとどうなるか? - (ひ)メモ
  • プロセス間の期限付き排他ロック - (ひ)メモ

    追記 2013-03-04 [twitter:@dankogai] さんにも言及されてました>< 404 Blog Not Found:perl - soloで任意のコマンドを期限付きで排他実行する 追記 2013-03-01 つづきを書きました。 続・プロセス間の期限付き排他ロック - (ひ)メモ 追記 2013-02-27 コメント欄でのやりとりの通り、穴がある(クリティカルセクションに複数プロセスが突入する可能性がある)のでちょっと出直してきます!! やりたいこと プロセス間の排他的実行を制御したい 一定時間経過したら実行できるようにしたい 例えば、フェイルオーバーを実行するスクリプトは、何度も実行できるとフェイルオーバー/バックを繰り返してフラップするので、一度フェイルオーバーしたら一定時間は実行できないようにしたい 実装 シンボリックリンクを使って排他制御する 期限切れは、シンボ

    プロセス間の期限付き排他ロック - (ひ)メモ
    sotarok
    sotarok 2013/02/28
  • branchを切った時点のコミットとbranchの最新コミットとのlogとdiffをみたい - (ひ)メモ

    Pro Gitから図を引用すると、こういう 場合に、分岐した時点のmasterとexperimentの先っちょのlogやdiffをみたいというお話です。実際的には、topic branchをmasterにマージする前に変更点を確認したいといった局面です。 log logの場合は「..」です。 $ git log --pretty=oneline master..experiment ec8428d4d1884d3413e0949603c0c5cdd8aef414 D 863f5738a395fe090afaeaa120b67c45d65131c4 Clogにおける「..」についてPro Gitから引用すると、以下のように書かれています。 これは "experiment からはたどれるけれど、master からはたどれないすべてのコミット" という意味です。 Git - リビジョンの選択 一

    branchを切った時点のコミットとbranchの最新コミットとのlogとdiffをみたい - (ひ)メモ
    sotarok
    sotarok 2012/09/26
  • nginxで名前ベースのバーチャルホストの複数指定をするときの注意点 - (ひ)メモ

    先日、wikipedia:冒険遊び場 に参加してきて、森の中を駆けずり回ったり、泥んこ遊びをしたり、たき火でおにぎりや焼きイモを焼いたりましまろを炙ったりしてべたhirose31です。あといまだにnginxかngnixかつづりがおぼえられないhirose31です。 nginx (0.6系) で、ひとつのserverブロックで複数の名前ベースのバーチャルホストを設定するには、server_nameディレクティブをこんな感じで指定します: 列挙する: chikin.curry.example.com beef.curry.example.com pork.curry.example.com 先頭(か末尾)にワイルドカード: *.curry.example.com 正規表現 ここで注意しなければならないのは、nginxがLocationヘッダのリダイレクトをする場合です。例えば、http://

    nginxで名前ベースのバーチャルホストの複数指定をするときの注意点 - (ひ)メモ
  • 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の万能感がハンパない - (ひ)メモ
  • 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 で気になった新機能などのメモ - (ひ)メモ
  • 株式会社ディー・エヌ・エーに入社しました - (ひ)メモ

    12月1日付けで株式会社ディー・エヌ・エーに入りました。 入社して1週間が経ち、少しずつ環境にも慣れてきたところで、優秀な仲間たちと楽しく充実した日々を送っています。 自分の仕事はこれまで通り、コードも書ける(書きたい)インフラエンジニアです。 まだ把握しきれていませんが、想像していた以上のトラフィック、サーバー台数のスケールで、これほど大きなシステムに関われることに興奮して鼻血が出そうな毎日です。 特に前職では人数が少なかったせいもあり、エンジニアリング以外のこともいろいろとやりました(おかげでいろいろと経験できてよかったです)が、ディー・エヌ・エーではエンジニアリングに集中し、自分のこれまでの経験と知識と勘を活かし早期にバリューを出せるように努力しつつ、優秀な仲間たちと切磋琢磨し、より自分の腕に磨きをかけていきたいと思っている所存です。 また、ブログや勉強会等しばらくおやすみしていまし

    株式会社ディー・エヌ・エーに入社しました - (ひ)メモ
    sotarok
    sotarok 2011/12/09
    わー。おめでとうございます!
  • ApacheのAllow, Denyディレクティブでand条件したい - (ひ)メモ

    追記: 2008-11-14 コメントで id:yasui0906 さんに教えてもらったように、 SetEnvIf X_CLIENT_TYPE "^(DoCoMo|EZWeb|ThirdForce)" is_mobile=1 SetEnvIf x-up-subno "XXXXXXXXXXXXX\.ezweb\.ne\.jp" my_ktai SetEnvIf is_mobile "^$" !my_ktai Order Deny,Allow Deny from all Allow from env=my_ktaiな風にした方が env!= の列挙よりスマートです! 自分もこっち使うようにしました。 たとえば、自分の携帯電話(au)からのアクセスだけ許可したいときは、 CIDRFile "/usr/irori/etc/ip.d/[a-zA-Z]*" SetEnvIf X_CLIENT_TYPE

    ApacheのAllow, Denyディレクティブでand条件したい - (ひ)メモ
    sotarok
    sotarok 2011/08/29
    なるほど、セット後、特定条件にマッチしたときに unset という発想
  • gitの中央repos運用時のパーミッションの調整 - (ひ)メモ

    gitで、bareな中央reposにpushしたい。 使うプロトコルは: http:// は遅いのでいや git:// はgit-daemon的に認証がちょっとやわそうなのでいまいち いい方法があったら教えてください>< pushする人らはsshアカウントがあるので、git+ssh:// でいいや 複数ユーザがpushするので、パーミッションに気を使わなければならない: 共通のグループ(例:sandbox)に属させて、chown -R root:sandbox sandbox.git; chmod -R g+w sandbox; find sandbox -type d|xargs chmod 2775 すればグループの統一はOK 問題は sandbox.git/objects/ 下とかに新規で作られるディレクトリのパーミッション。 ~/.bashrcでumask 002すればいいんだけど

    gitの中央repos運用時のパーミッションの調整 - (ひ)メモ
    sotarok
    sotarok 2011/08/08
    へえー
  • Amazon Route 53+ELBでホスト名なし(zone apex)の運用もOKになったので試してみた - (ひ)メモ

    先日、Amazon Route 53のベータがとれて正式版になったのと同時に、ELBと協調動作するための機能(Alias Resource Record Set)も追加されました。 New Route 53 and ELB features: IPv6, Zone Apex, WRR and more - All Things Distributed 【AWS発表】 クラウド上の名前解決サービスAmazon Route 53のベータをとり正式版に - Amazon Web Services ブログ 以前に書いた「Amazon ELBでホスト名なしのhttp://example.comを運用すると発生するいくつかの弊害」もこれで解消できそうだったのでちょっと試してみました。 Alias Resource Record Set ELBとの協調動作にはRoute 53で「Alias Resour

    Amazon Route 53+ELBでホスト名なし(zone apex)の運用もOKになったので試してみた - (ひ)メモ
    sotarok
    sotarok 2011/07/27
    route 53
  • Teeny Nagios - Nagiosのスマートフォンビューを作ったよー - (ひ)メモ

    自分の場合、iPhoneでNagiosを見たい場合というのは、 アラートが飛んできたので状況を確認したい →ざっと状況をつかみたいので、一覧性の高いビューがいい 即時対応は必要なさそうなので、とりあえずアラートを止めたい →ホスト単位、またはサービス単位で「Schedule downtime」したい ぐらいなので、それに特化したスマートフォンビューを作りました。 プロジェクトホーム http://hirose31.github.com/teeny-nagios/ レポジトリ https://github.com/hirose31/teeny-nagios Mobile Safariで通常のNagiosのページを見てもいいんですが、操作性、一覧性がイマイチだなーと思ったのが作った動機です。 ホーム。ざっくり状況を確認するのに。 ホストの一覧。黄色はwarningが、赤色はcriticalが出

    Teeny Nagios - Nagiosのスマートフォンビューを作ったよー - (ひ)メモ
  • Kyoto Tycoonの運用TIPSなどなど - (ひ)メモ

    チャオ!みんな、Kyoto Tycoonライフをエンジョイしてるかい!? 今日はKTライフを満喫してるミーからの運用TIPSアンドソーオンをお届けするYO! kchashmgrとktremotemgrコマンドの補完 人間の脳活動のピークは22歳の今日このごろ、みなさんいかがおすごし? もうね、ミーは全然コマンドオプションとか覚えられないからシェル(bash)で補完しまくってるYO! kchashmgrとktremotemgrだけだしオプション網羅してないし補完ルールもアレだけどオープン&シェアなマインドとガッツで気になる人はfork & push! Nagiosで死活監視 ナギオス!みんな使ってるよね? ミーはcheck_httpでKTのHTTP RPCのechoにアクセスしてデッドオアアライブの監視してる! define command { command_name check_kyot

    Kyoto Tycoonの運用TIPSなどなど - (ひ)メモ
    sotarok
    sotarok 2011/06/01
    なんなんだw / が、参考になる
  • rsync -Rで中間ディレクトリがシンボリックリンクな場合の注意点 - (ひ)メモ

    複数サーバを管理する場合、管理コストの増加やオペレーションミスを避けるための施策として、「すべてのサーバの内容を同一に保つ」という管理方法があります。 サーバの内容を同一に保つには、小中規模ならrsyncと、パス指定の簡便化とミスを防ぐために-a -R (--relative)オプションを使うのがベストでしょう。 ただ、-Rを指定しているときに、同期コピー対象のパスにディレクトリへのシンボリックを含んでいる場合には注意が必要です。そこで今回はrsync 2.6とrsync 3のそれぞれについて、ふたつのケースについて検証してみたいと思います。 ケース1: 実ディレクトリが同じ 物理的なディレクトリ構造をそのまま見せるのではなく、論理的な意味あるディレクトリ名/構造として見せたい場合には、ディレクトリのシンボリックリンクを使うとよいです。 例えば: RAID等のストレージにあるディレクトリの

    rsync -Rで中間ディレクトリがシンボリックリンクな場合の注意点 - (ひ)メモ
  • nginxで特定ホスト以外からのアクセスをメンテナンス画面にする方法 (2) - (ひ)メモ

    d:id:sfujiwara:20100812:1281587030 の revise。 Nginxのifは条件節に&&(and)が使えない、ifのネストもできないので、複数の条件で判別したい場合は変数を使うといいよって感じです。 server { ... #error_page 500 502 503 504 /static/50x.html; ### maintenance error_page 500 502 504 /static/50x.html; set $go_maintenance "true"; if ($uri ~ "^/error/") { set $go_maintenance "false"; } if ($remote_addr ~ "^192\.0\.2\.") { set $go_maintenance "false"; } if ($remote_addr

    nginxで特定ホスト以外からのアクセスをメンテナンス画面にする方法 (2) - (ひ)メモ
  • memcached(プロトコル)のデータレプリケーション - (ひ)メモ

    国内だけでなく国外(なぜか主に中国語)でもまだrepcachedについて言及してるのをちらほら見かけるのですが、repcachedはmemcached 1.2.8ベースですし(memcached 1.4.5に対応してる人もいるようですが)いまならKyoto Tycoon使えばいいんじゃないかと思うのです。 Kyoto Tycoonなら: memcachedプロトコルプラグインを使えば、Kyoto Tycoonがそのままmemcachedの代替になる(memcachedプロトコルを喋るクライアントコードはそのままでよい) Tokyo Tyrantと違ってexpireもOK memcachedの代替が目的なら、速いオンメモリDB(StashDBとか)でOK 非同期レプリケーションもできる ホットスタンバイ側のサーバリソースが無駄に思うなら、keyに応じてmodとかでリクエストするサーバを2台の

    memcached(プロトコル)のデータレプリケーション - (ひ)メモ
    sotarok
    sotarok 2011/05/31
  • 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を作ってみた - (ひ)メモ
  • 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で、指定したときだけクエリキャッシュする - (ひ)メモ
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

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

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
  • kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ

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

    kumofsの死活監視はこんな感じでNagiosでやってます - (ひ)メモ
    sotarok
    sotarok 2010/01/19
    memcached プロトコルで SET -> GET -> DELETE ためす
  • 実録、ほぼ無停止な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のフェイルオーバ (動画もあるよ) - (ひ)メモ
    sotarok
    sotarok 2009/11/13
    fail over