2011年3月21日月曜日

このようなスペック

以前、
作業を振ってみたひと。

・たしか院卒(修士)
・理系
・プログラマで入社

紆余曲折、諸事情があり、がりがりプログラムするよりもサーバまわりをみることになったようで、
自分が面倒をみることになった。
とくに趣味でサーバをやってたということもなく、、ほぼゼロから。
Redmine 振ってみたとき、1週目で「今週末には Redmine バージョンうpできます」などと報告を
もらっていたものだから、そこそこ知ってるものとばかり思っていた。。
(その後 3/11 に自分が巻き取り、終えた。)

院卒で専門分野とは違う、かつ趣味でも特にしていないものを叩き込むのは可能なのだろうか?
と考えたりもする。

まー、本人のやる気次第だよね。やるひとはやるしやらんひとはやらん。それだけか。

学歴のグレードみれば自分より遥かに上だと思うし、できるはずだ。
(どこ大学の大学院なのかは知らんけど、「研究などに没頭する素地」というものがあるというイメージはある)

しっかし、ことあるごとに「うちの研究室は」と話を持ち出すのはなんでなんだろう?
いままでみてきた院卒のひと、そんなに口にしてなかったんだけど、
アカデミックよりとそうでないひとでかなり違うのかな??

オレAMI をつくる

実は、作ったことがない。
これまでは既存のものを使っていたので、サラの状態から作成したことはない。

・かゆいところに手が届かない
・このディストリビューションのがない

・・・といった問題がなかったから作らなかったともいう。

でもまぁそれもなんだかなー、と思いつつあるので
http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/
をみながら取り組んでみることにした。
(Using Amazon EC2 -> Using AMIs -> Creating Your Own AMIs)
S3-Backed の loopback のほう。Existing AMI は何度も何度も何度もやっている。

2011年3月6日日曜日

心構え?

某所で Redmine を使っておるのだが、導入されて以来、バージョンアップをしていない。
(自分がサーバ移行するときは同一バージョンをいれた. 移行は移行、バージョンアップはバージョンアップだからね!)

Redmine のサイト (http://redmine.jp/) を軽くみると、
必要な手順はかかれているっぽい、ので他の人に振って、やってもらうことにした。

振って1週間すぎ、いろいろ気付かされることがあった。ので書いてみる。

・UNIX のアカウントと MySQL のアカウントの説明が必要
・Ruby, Rails を使っていることの説明が必要
・gem の説明が必要

redmine.jp をみればかいてあることは多いのだけどね。

・実行した結果、どうなったか確認しないといけない、ということの説明が必要
=> ローカルに試しに入れる際、導入手順の通りにして失敗してるにもかかわらず先に進み、結局できていない、という。。

・ログを見る、ということの説明が必要
=> 「なんか失敗しました」で止まる。

・何を実行した結果、今の状態になったかの説明をしないと他人にはわからないよ、ということの説明が必要
=> いくらなんでも、エスパーとか神じゃない・。
「なんかできない」「なんか失敗した」の「なんか」はわかりっこない。

・だいたいのことは先人がいて、検索するとみつかるよ、、ということの説明が必要
とびっきり新しいことや、先端のことや、ニッチなことで無い限りはだいたい検索すればそこそこあたりがつくのに、しない。
(「あたりがつく」のがポイント。求めているものに完全に合致するとは限らない)

今回は
http://www.ruby-forum.com/topic/1202806
と
http://www.redmine.org/boards/2/topics/8458
で解決できた。

「サクサク Redmine のようなものを導入や移行できるスキル」というのはどうやって身に付いたんだっけなぁ。。

もうちょっと様子を見て、まきとるかもしれんなぁ。(2週,3週と費やしてもらうものでもないよね、、)

2011年2月26日土曜日

.xz なファイル

FreeBSD 8.2-RELEASE がでてたので、dvd の iso をミラーサイトから入手。

みると、 FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz となっている。
今回から gz やめて xz にしたみたいだ。普及のきざし?

・・・なので xz を入れる。以下、Mac OS X で MacPorts を利用。

% port info xz
xz @5.0.1 (archivers)
Variants: universal

Description: XZ utils consist of a few relatively separate submodules: *
LZMA/XZ encoder/decoder command line tool similar to gzip/bzip2 *
Scripts to ease grepping, diffing and viewing (lz*grep,
lzdiff/lzcmp, lzmore/lzless)
Homepage: http://tukaani.org/xz/

Library Dependencies: libiconv, gettext
Platforms: darwin
License: unknown
Maintainers: afb@macports.org, openmaintainer@macports.org

% sudo port install xz

% port contents xz
Port xz contains:
/opt/local/bin/lzcat
/opt/local/bin/lzcmp
/opt/local/bin/lzdiff
/opt/local/bin/lzegrep
/opt/local/bin/lzfgrep
/opt/local/bin/lzgrep
/opt/local/bin/lzless
/opt/local/bin/lzma
/opt/local/bin/lzmadec
/opt/local/bin/lzmainfo
/opt/local/bin/lzmore
/opt/local/bin/unlzma
/opt/local/bin/unxz
/opt/local/bin/xz
/opt/local/bin/xzcat
/opt/local/bin/xzcmp
/opt/local/bin/xzdec
/opt/local/bin/xzdiff
/opt/local/bin/xzegrep
/opt/local/bin/xzfgrep
/opt/local/bin/xzgrep
/opt/local/bin/xzless
/opt/local/bin/xzmore
/opt/local/share/doc/xz/AUTHORS
/opt/local/share/doc/xz/COPYING
/opt/local/share/doc/xz/COPYING.GPLv2
/opt/local/share/doc/xz/examples/xz_pipe_comp.c
/opt/local/share/doc/xz/examples/xz_pipe_decomp.c
/opt/local/share/doc/xz/faq.txt
/opt/local/share/doc/xz/history.txt
/opt/local/share/doc/xz/lzma-file-format.txt
/opt/local/share/doc/xz/NEWS
/opt/local/share/doc/xz/README
/opt/local/share/doc/xz/THANKS
/opt/local/share/doc/xz/TODO
/opt/local/share/doc/xz/xz-file-format.txt
/opt/local/share/locale/cs/LC_MESSAGES/xz.mo
/opt/local/share/locale/de/LC_MESSAGES/xz.mo
/opt/local/share/locale/it/LC_MESSAGES/xz.mo
/opt/local/share/man/man1/lzcat.1.gz
/opt/local/share/man/man1/lzcmp.1.gz
/opt/local/share/man/man1/lzdiff.1.gz
/opt/local/share/man/man1/lzegrep.1.gz
/opt/local/share/man/man1/lzfgrep.1.gz
/opt/local/share/man/man1/lzgrep.1.gz
/opt/local/share/man/man1/lzless.1.gz
/opt/local/share/man/man1/lzma.1.gz
/opt/local/share/man/man1/lzmadec.1.gz
/opt/local/share/man/man1/lzmainfo.1.gz
/opt/local/share/man/man1/lzmore.1.gz
/opt/local/share/man/man1/unlzma.1.gz
/opt/local/share/man/man1/unxz.1.gz
/opt/local/share/man/man1/xz.1.gz
/opt/local/share/man/man1/xzcat.1.gz
/opt/local/share/man/man1/xzcmp.1.gz
/opt/local/share/man/man1/xzdec.1.gz
/opt/local/share/man/man1/xzdiff.1.gz
/opt/local/share/man/man1/xzegrep.1.gz
/opt/local/share/man/man1/xzfgrep.1.gz
/opt/local/share/man/man1/xzgrep.1.gz
/opt/local/share/man/man1/xzless.1.gz
/opt/local/share/man/man1/xzmore.1.gz


ダウンロードした .xz は unxz でほどけばよい。

% file ~/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz
/Users/katsuji/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz: xz compressed data
% ls -l ~/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz
-rw-r--r--@ 1 katsuji staff 2132232848 2 26 11:18 /Users/katsuji/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz
% unxz -v ~/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz
/Users/katsuji/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso.xz (1/1)
100 % 2,033.5 MiB / 2,302.8 MiB = 0.883 31 MiB/s 1:13

% ls -l ~/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso
-rw-r--r-- 1 katsuji staff 2414686208 2 26 11:18 /Users/katsuji/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso

% sha256deep ~/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso
4e2d31e7aa9ce20fd263dec0388469c0d4ae7cdf54508a466637abeef5081c91 /Users/katsuji/Downloads/FreeBSD-8.2-RELEASE-amd64-dvd1.iso

http://en.wikipedia.org/wiki/Xz

2011年2月11日金曜日

はじめての data=writeback

はじめて、というのはうそで、、data=writeback にするの忘れてたら痛い目みたというお話。
以下の通り。

とあるアプリで猛烈に TokyoTyrant をシバくものをプログラマさんが作りました。

ぼくはいつもどおりにサーバ一式を用意しました。

めでたくリリースされました。

しかし数日たち、、日に日にエラーがましまし。。

アプリケーションサーバ不足は追加により、すぐに解消しました。

それでも夜の混雑時にはエラーがでたり、鈍重になります。

モニタリングしているグラフをみると、WAIT CPU がひどい状態です。

そういえば、と思ってみると、TokyoTyrant を動かしているサーバの
casket.tch をおいているパーティションを data=writeback にしていませんでした。

幸いなことにちょうど、メンテ予定日が設けられていました。

メンテ時に TokyoTyrant を停止し、writeback でマウントしなおし、TokyoTyrant を再開しました。

その後 WAIT CPU は消えさりました。

めでたしめでたし。


15:00 にメンテ開始、16:00に再開
図1


図2


図3

2011年2月1日火曜日

dnscache キャッシュ量の調整

これも久しぶりにしたので、メモ的に。

How to adjust the cache size をみる

上記に従いログを確認

2011-01-30 22:00:35.746890500 stats 72343 2097173 1 0
2011-01-31 22:00:35.518843500 stats 436907 13747389 6 0

stats 行の 2つめの数値をみてキャッシュがどんだけ増えたかを確認 (1つめはクエリ回数)

13747389 - 2097173 = 11650216

10M (10000000) で設定しておいたため、

10000000 / 11650216.0 = 0.8583531841813061

1 だともちっと大きくてよく、10 だと無駄っぽく、3日が一般的な最大値ということなので、
前日との差 * 3 が収まるくらいまで増量。CACHESIZE を 36000000 , DATALIMIT を 37748736 にした。
CACHESIZE < DATALIMIT にしておけばどうなっててもいいんだったけ、、。
この場合は 36 * 1000^2 と 36 * 1024^2 で差をつけた。

これで様子見

2011年1月29日土曜日

djbdns is striking back

タイトルに深い意味はない。("striking back" 書きたかっただけ)

内部DNS サーバに unbound と NSD を使っているのだが、これがなにやらご機嫌斜めのようである。
ある程度時間を割いてちょろちょろパラメータ調整してみたいのだけど、
それにさほど手間をとりたくない。(DNS いじるだけのお仕事ではないし、、)
あと、フォワーダとしての設定を一部変更しておく必要がでてきていじくる機会があり、

・・・ (手慣れた)djbdns だな、うん。。。

と思い、時代(?)に逆行してるんだ、、よね、、とか、「まるで成長していない・・・」とも思いつつ、djbdns をインストール、dnscache と tinydns をちょろりと設定して、置き換えた。今は全世界でどのくらい使われているんだろうな。
自分としてはやはり、よく手に馴染んでいるから戻ってきてしまったよという感じ。

久しぶりに扱ったこともあり、以下メモ。

djbware 全般
・errno の問題は conf-cc に -include /usr/include/errno.h を加える (別の方法もある)
・make setup
・daemontools 0.76 は slashpackage なので ./package/compile したあとは コマンド群を まるっとinstall でいれるようにする (slashpackage は嫌い)

アカウント作成
・log 用に dnslog ユーザ
・dnscache ユーザ, tinydns ユーザ作成 (わけんでもいいけど、まぁ)

dnscache
・dnsroots.global は古いので注意
・dnscache-conf
・root/servers/@ を所定のキャッシュ DNS サーバのアドレスに変更 (ルートサーバは見に行かない)
・root/servers/<とあるドメイン名> に tinydns のアドレスを記述して内部で解決させる
・env/ 以下に FORWARDONLY を作成. 中身は 1 にしておく
・env/CACHESIZE, env/DATALIMIT を適宜変更
・/service 以下に symlink はる、起動する
・しばらくして キャッシュサイズを調整する (stat 行をみておく)

tinydns
・tinydns-conf でもりっと作成
・Z 行は使わず . 行で。A RR の ワイルドカードも前は * でなくて \052 だったかな、そう書いてたけど * で問題ない
・tinydns-get でテストを行う


(一旦)さよなら、unbound, NSD..