タグ

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

  • ファイル指定で、ページキャッシュにのっているか確認したり追い出したり - (ひ)メモ

    ファイル指定で、ページキャッシュにのっているか確認したり追い出したりするPerlモジュールを書きました。 https://metacpan.org/release/Sys-PageCache https://github.com/hirose31/Sys-PageCache Linux なら動くはずですが、動かなかったら教えてください。あと一応、FreeBSD 8.3以上でも動くと思います。 既存の実装にGooglelinux-ftoolsやエヌハヤシ氏のpagecache-toolがありますが、これのPerlモジュール実装(XS)になります。 https://code.google.com/p/linux-ftools/ https://github.com/nhayashi/pagecache-tool たまにfreeコマンドでみるとbuffers/cacheがっててswapしてる

    ファイル指定で、ページキャッシュにのっているか確認したり追い出したり - (ひ)メモ
    hogem
    hogem 2013/09/15
  • BLACKHOLEストレージエンジンを使ってInnoDBなテーブルの暖気運転をする - (ひ)メモ

    どうもこんにちは。小太り男子中年のサーバーエンジニアです。 先日行われたhbstudy#13の [twitter:@nippondanji]さんのセッション(スライド) で、「BLACKHOLEストレージエンジンを使えば、InnoDBなテーブルの暖気運転(テーブルデータを空読みして、buffer poolに乗っける)ができる」という話があったので、あなるほどーと思い試してみました。 CREATE TABLE _preload LIKE huge_table; ALTER TABLE _preload ENGINE = BLACKHOLE; INSERT INTO _preload SELECT * FROM huge_table; DROP TABLE _preload;なるほどなるほど。

    BLACKHOLEストレージエンジンを使ってInnoDBなテーブルの暖気運転をする - (ひ)メモ
    hogem
    hogem 2010/11/15
  • 前月を知る - 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編 - (ひ)メモ
    hogem
    hogem 2010/10/18
    それ1 month agoで、、、って月末だとダメなのかー。 / 15日の1ヶ月前(後) を見るようにする date '+%Y-%m' -d "$(date '+%Y-%m-15') -1 month"
  • ウィンドウをキッチリカッチリ配置したい - (ひ)メモ

    XではXdefaultsやfvwm2rcで、Virtual Desktopごとにgeometryをビシっと指定して常にきもちよくmltermとかのウィンドウが並ぶようにしているhirose31です。 Macでは基的に終了時の位置を覚えててくれるんで、いちいち位置指定しなくてもいいんですが、MacBookを持ち歩いていて、オフィスでは外部モニタあり、自宅ではなしな生活だと、モニタをつなげる/外すたびに各ウィンドウがあっちゃいったりこっちゃいったりで大変落ち着きません。 調べたところ、AppleScriptを使えばウィンドウの位置、大きさを変えることができるとわかったので、 MacBookのあらゆるウィンドウをキー操作で自在に操るために(AppleScript + Quicksilver) - ザリガニが見ていた...。 AppleScriptであらゆるウィンドウを操作できなかった原因が分か

    ウィンドウをキッチリカッチリ配置したい - (ひ)メモ
    hogem
    hogem 2010/10/18
    "オフィスでは外部モニタあり、自宅ではなしな生活だと、モニタをつなげる/外すたびに各ウィンドウがあっちゃいったりこっちゃいったりで大変落ち着きません。" あるある
  • フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ

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

    フロント/バックのreverse proxy構成で、指定秒数以内に必ずレスポンスを返す方法 - (ひ)メモ
  • 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 がよさげかも - (ひ)メモ
  • 実録MySQLのチューニング 春の陣 - (ひ)メモ

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

    実録MySQLのチューニング 春の陣 - (ひ)メモ
    hogem
    hogem 2010/05/25
  • MySQLのスロークエリログを別サーバに転送する - (ひ)メモ

    複数台あるMySQLのスロークエリログを、いちいちDBサーバにログインして読むのがめんどうくさい log_output = FILE,TABLE としてテーブルに入れてリモートからSELECTできるようにするのは? → テーブルに入れた場合、query timeとlock timeの型がTIME型になり精度が秒になってしまうのでダメ ファイルに出力したものをログサーバーにどうにかして飛ばす 10分おきとかにscpする →これでできるのはわかるけど、他にいい方法ないかなぁ syslogで飛ばすのはどうか (id:stanaka++) →srd!! スロークエリログに限らず、追記されるファイル全般に適用できると思います。 rsyslogの方がいけてるそうですが、自分が使ってるのは syslog-ng 2.0.9 なのでそ の設定例です。 DBサーバ # follow_freq(180) で 3

    MySQLのスロークエリログを別サーバに転送する - (ひ)メモ
    hogem
    hogem 2010/05/25
    syslogでスロークエリログを飛ばす手順。 とりあえずお手軽にcronでscpしてるわー
  • 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に時刻を表示する - (ひ)メモ
    hogem
    hogem 2010/03/12
    .bashrcに HISTTIMEFORMAT='%Y-%m-%d %T' / bash 3.0以降
  • synergyで、キーボードだけでスクリーンを移動する - (ひ)メモ

    複数の PC を手元で操作 「Synergy」を使おう! -Win&Mac 混合対応版- - livedoor ディレクターブログ を読んで思い出したので。 通常、スクリーン間の移動はマウスポインタの移動によって行うのですが、switchToScreen(SCREEN_NAME) を使えばキーボード操作でもスクリーンの移動ができます。 「fvwm2で、ポインタ移動はマウスじゃなくてキーボード(Shift+Meta+矢印とか)で操作してます(キリッ」とかいう生粋のキーボーダーでなくても、多面スクリーンだとカレントスクリーンを見失うことがよくあると思うので、「このキーを押せばこのマシンがカレントスクリーンになる」ってのは便利なんじゃないかと思います。 自分は Linux にキーボード/マウスを繋いでいるのですが、~/.synergy.conf はこんな感じで。 カレントスクリーンがどこであって

    synergyで、キーボードだけでスクリーンを移動する - (ひ)メモ
  • あるあるおハマり大事典 - InnoDBなのに行ロックしないの - (ひ)メモ

    drop table if exists t; create table t ( iid int ,nid int ,bid binary(3) ,msg varchar(69) ,key (iid) ,key (bid) ) ENGINE=InnoDB; insert into t values (1,1,1,"ichi"),(2,2,2,"ni"),(3,3,3,"san") ,(4,4,4,"si"),(5,5,5,"go"),(6,6,6,"roku") ; なテーブルとデータで、2つ端末を用意して update しあいっこしてみます。 まず、これ↓は両方ともupdateが完了してスコっと返ってきます。行レベルロック++ begin; update t set msg = "t1" where iid = 1; と begin; update t set msg = "t2" wh

    あるあるおハマり大事典 - InnoDBなのに行ロックしないの - (ひ)メモ
  • ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ

    ぼくは長年こういう方法で管理してますよ、というお話です。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

    ソースから自前ビルドしたソフトウエアの効率的な管理方法 - (ひ)メモ
    hogem
    hogem 2009/12/17
    わしも似たような入れ方してます / バージョンアップ、切り戻しの作業効率を考えるとprefixをマイナーバージョンまで含めてるほうが便利ですよね / pacoも便利だけど
  • 実録、ほぼ無停止な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のフェイルオーバ (動画もあるよ) - (ひ)メモ
    hogem
    hogem 2009/11/12
  • 多すぎて使えないオプション選手権 - coreutils-7.6 編 - (ひ)メモ

    さあ!栄冠の一位は誰の手に!? 発表はわっふるわっふるの後で!! わっふる! わっふる!! lsさん、オプション大杉>< ls.c : 40 abcdfghiklmnopqrstuvwxABCDFGHILNQRSTUXZ1 pr.c : 30 -0123456789DFJNTWabcdfhlmortvw od.c : 26 AaBbcDdeFfHhIijLlNOoSstvXx sort.c : 24 -bcCdfghikmMnorRsStTuVyz cp.c : 20 abdfHilLnprstuvxPRST uniq.c : 20 -0123456789Dcdfisuwz du.c : 17 0abchHklmsxBDLPSX ptx.c : 17 AFGMORSTWbifgotrw tail.c : 17 cnfFqsv0123456789 fmt.c : 16 0123456789c

    多すぎて使えないオプション選手権 - coreutils-7.6 編 - (ひ)メモ
  • vm.overcommit_memory = 2 のときに、実際の上限と今現在の値はどこで確認できるか? - (ひ)メモ

    (vm.overcommit_memoryの説明はぐぐってください: google:vm.overcommit_memory) 例えば vm.overcommit_memory = 2 vm.overcommit_ratio = 90なときに、実際の上限と今現在の値はどこで確認できるか? the total virtual address space on the system is limited to (SS + RAM*(r/100)), where SS is the size of the swap space, and RAM is the size of the physical memory, and r is the contents of the file /proc/sys/vm/overcommit_ratio. proc(5): process info pseu

    vm.overcommit_memory = 2 のときに、実際の上限と今現在の値はどこで確認できるか? - (ひ)メモ
  • レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ

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

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ
    hogem
    hogem 2009/10/23
  • 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 」が凄い! - (ひ)メモ
    hogem
    hogem 2009/09/29
    本家に取り入れられても良いレベル
  • YAPC::Asia 2009 で「インフラのはなし(仮)」について話します - (ひ)メモ

    このところ、MySQL と Nagios と mod_perl 関連のエントリをいろいろ書いていますが、それは、スケールアウト可能で、かつ、管理が容易なネットワーク・サーバインフラを、今まさに作っている、という理由があるからです。 ただ、ブログエントリだとどうしても細切れになるので、一連のモジュールやプログラムを組み合わせて、どうやってスケールするインフラを作るのかという話を YAPC::Asia 2009 でさせていただくことにしました。 YAPC::Asia 2009 は9月10日(木)と11日(金)の2日間、東京工業大学大岡山キャンパスで開催されます。今日からチケット販売も始まったので、興味のある方はお越しいただければ、と思います。 YAPC::Asia 2009 インフラのはなし(仮) 【参考文献】 http://d.hatena.ne.jp/tokuhirom/20090807/

    YAPC::Asia 2009 で「インフラのはなし(仮)」について話します - (ひ)メモ
  • 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の関係 - (ひ)メモ
  • ブラウザのリクエストに応じて、予め圧縮しておいたのか生のか選んでjsやcssを配信する方法 〜Apache 2.2編〜 - (ひ)メモ

    ググるといろいろできますけど、若干おハマりしたので。 こんな設定で: # Expires*は圧縮には関係ないけど ExpiresActive On ExpiresByType application/javascript "access plus 1 years" ExpiresByType text/css "access plus 1 years" # こっちが丸 <Location ~ "\.(js|css)(\.(js|css|gz))?$"> Options +MultiViews RemoveType .gz AddEncoding x-gzip .gz </Location> こんなファイルを置いておくと: $ ls -1 js/ jj.js.gz jj.js.js こんな感じのレスポンスになります。 $ curl -i -H 'Accept-Encoding: gzip'

    ブラウザのリクエストに応じて、予め圧縮しておいたのか生のか選んでjsやcssを配信する方法 〜Apache 2.2編〜 - (ひ)メモ
    hogem
    hogem 2009/07/26
    mod_negotiation