Hatena::ブログ(Diary)

マツモブログ このページをアンテナに追加 RSSフィード

2012-03-07 天運は我に無いけど原因はinodeにあった

天運は我に無いけど原因はinodeにあった

| 00:36 | 天運は我に無いけど原因はinodeにあったを含むブックマーク 天運は我に無いけど原因はinodeにあったのブックマークコメント

nginxとかmod_disk_cacheとかでまぁ何でも良いんですが、キャッシュファイル置き場を/dev/shmにしている時に

No space left on device

ってメッセージがエラーログに出だしたらこれから先を読めば解決!!原因はinode溢れに有り。


dh -ihと叩けば恐らく100%近くになっている筈です。

↓こんな感じになっている事かと思われますよ。泣けますねぇ。

$ df -ih /dev/shm
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
tmpfs                   129K    129K       1  100% /dev/shm

※この場合13万強ファイル置いたら死亡ですね。

という訳でファイル消す訳でもなく分割するでもなくinodeの上限増やしてしまえ!というのがこれから↓です。

※作業前にバックアップは忘れずにね!

cp -ip /etc/fstab /etc/fstab.`date +%Y%m%d`

/etc/fstabの中に↓の行が有るかと思うんですが、

tmpfs                   /dev/shm                tmpfs   defaults        0 0

こいつのdefaultの後にnr_inodesって書いて増やしたい分書いてやればOKです。(0って書くと無限になるみたいです。)

↓256kにする場合はこう書いてぇ。

tmpfs                   /dev/shm                tmpfs   defaults,nr_inodes=256k        0 0

そしてmountし直し。増えた!!

# umount /dev/shm
# mount /dev/shm
# df -ih /dev/shm/
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
tmpfs                   256K       1    256K    1% /dev/shm

nginxとかapacheで使っている場合は握っててumount出来ないので

service nginx stop
umount /dev/shm
mount /dev/shm
service nginx start

の流れでやりましょう。

ちなみに/dev/shmの中umountした時点で全部綺麗になっちゃうから注意してね!

トラックバック - http://d.hatena.ne.jp/yumatsumo/20120307

2011-12-22 ソースインストールvimで日本語が文字化け

ソースインストールvimで日本語が文字化け

| 22:00 | ソースインストールvimで日本語が文字化けを含むブックマーク ソースインストールvimで日本語が文字化けのブックマークコメント

何でこんな事になってしまったんだろう・・・。自分はもっと出来る男だと思い込んでた・・・。

何かと言いますとvimをソースからインストールしたんですがどうにもこうにも日本語表示がうまくいかなくて3時間悩みました。

http://www.vim.org/download.php#unix

# ./configure
# make
# make install

なんでーなんで日本語化けるのーなんでなんでぇ。サーバロケールはutf8でLANGもあってるし.vimrcにもちゃんとfileencodinfsとか書いてるしなんでぇ!という所で、そういえばオレrpmしか入れた事無かったという事に気づきまして・・・。

頭を冷やしてconfigureのオプションをじっくり見てみるとそれらしいのがやっぱり有りました。

# ./configure --help | grep -2 multi
  --disable-netbeans      Disable NetBeans integration support.
  --enable-sniff          Include Sniff interface.
  --enable-multibyte      Include multibyte editing support.
  --enable-hangulinput    Include Hangul input support.
  --enable-xim            Include XIM input support.

そう!マルチバイト!

という事で↓で無事化けなくなりましとさ。

# ./configure --enable-multibyte
# make
# make install

yukiyuki 2013/05/14 15:54 助かりました!ありがとうございます。

トラックバック - http://d.hatena.ne.jp/yumatsumo/20111222

2011-12-09 HadoopでShuffle Error

HadoopでShuffle Error

| 00:20 | HadoopでShuffle Errorを含むブックマーク HadoopでShuffle Errorのブックマークコメント

reduce処理で「Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.」と出て戦ったのでメモ。

原因としては各ノードのホスト名(と対応するIPアドレス)が127.0.0.1で通信不能だったため。

↓のようなNICを複数持っている構成の場合(ホスト名=127.0.0.1とhostsに書いてました)

NameNode
ホスト:namenode01.matsumo(127.0.0.1)
eth0:192.168.1.1 # 外向けセグメント(hostsにnamenode01.matsumo.sotoと登録)
eth1:192.168.2.1 # 中向けセグメント(hostsにnamenode01.matsumo.nakaと登録)

DataNode
ホスト:datanode01.matsumo(127.0.0.1)
eth0:192.168.1.2 # 外向けセグメント(hostsにdatanode01.matsumo.sotoと登録)
eth1:192.168.2.2 # 中向けセグメント(hostsにdatanode01.matsumo.nakaと登録)

Hadoopのconf/slaveには中向け通信なので

datanode01.matsumo.naka

と書いておきます。よっしゃよっしゃ(とこの時は思っていた)

するとあらら・・・Reduce失敗。

↓のメッセージがログに出てました。

「Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.」

半日くらい戦ったんで結論を勿体ぶりたいですが、端的に言うとnamenode01.matsumo(サーバのホスト名)で名前解決出来てかつ通信出来ないといけないという事みたいです。

内部の何処で何をやってるかは正直分かりませんが・・・

という訳でホスト名と対応するIPアドレスを中向けセグメントに直したら無事動きました

127.0.0.1 namenode01 namenode01.matsumo  localhost localhost.localdomain
↓
127.0.0.1 localhost localhost.localdomain
192.168.2.1 namenode01 namenode01.matsumo namenode01.matsumo.naka

中々それっぽいページが見つからなかったので書いておきます。

トラックバック - http://d.hatena.ne.jp/yumatsumo/20111209

2011-10-10 dateの前とか後とかのオプションのまとめ このエントリーを含むブックマーク このエントリーのブックマークコメント

何回やっても覚えないというか都度ぐぐる破目になっているのでここにまとめます!

期間は秒から年まで!過去ago!未来は何も無し!

#!/bin/bash

echo "----------------------"
echo "過去シリーズ"
echo "----------------------"

echo ""
date '+%Y/%m/%d %H:%M:%S'

echo "去年"
date -d '1 year ago' '+%Y/%m/%d %H:%M:%S'

echo "先月"
date -d '1 month ago' '+%Y/%m/%d %H:%M:%S'

echo "昨日"
date -d '1 day ago' '+%Y/%m/%d %H:%M:%S'

echo "1時間前"
date -d '1 hour ago' '+%Y/%m/%d %H:%M:%S'

echo "1分前"
date -d '1 minutes ago' '+%Y/%m/%d %H:%M:%S'

echo "1秒前"
date -d '1 second ago' '+%Y/%m/%d %H:%M:%S'

echo "----------------------"
echo "未来シリーズ"
echo "----------------------"

echo ""
date '+%Y/%m/%d %H:%M:%S'

echo "来年"
date -d '1 year' '+%Y/%m/%d %H:%M:%S'

echo "来月"
date -d '1 month' '+%Y/%m/%d %H:%M:%S'

echo "明日"
date -d '1 day' '+%Y/%m/%d %H:%M:%S'

echo "1時間後"
date -d '1 hour' '+%Y/%m/%d %H:%M:%S'

echo "1分後"
date -d '1 minutes' '+%Y/%m/%d %H:%M:%S'

echo "1秒後"
date -d '1 second' '+%Y/%m/%d %H:%M:%S'

実行結果は以下の通り!何だかやってる内に覚えちゃった気がする。

$ bash date.sh
----------------------
過去シリーズ
----------------------
今
2011/10/10 21:27:44
去年
2010/10/10 21:27:44
先月
2011/09/10 21:27:44
昨日
2011/10/09 21:27:44
1時間前
2011/10/10 20:27:44
1分前
2011/10/10 21:26:44
1秒前
2011/10/10 21:27:43
----------------------
未来シリーズ
----------------------
今
2011/10/10 21:27:44
来年
2012/10/10 21:27:44
来月
2011/11/10 21:27:44
明日
2011/10/11 21:27:44
1時間後
2011/10/10 22:27:44
1分後
2011/10/10 21:28:44
1秒後
2011/10/10 21:27:45
トラックバック - http://d.hatena.ne.jp/yumatsumo/20111010

2011-08-16 思います。考えています。推測されます。恐らく。の抜け道

思います。考えています。推測されます。恐らく。の抜け道

| 00:05 | 思います。考えています。推測されます。恐らく。の抜け道を含むブックマーク 思います。考えています。推測されます。恐らく。の抜け道のブックマークコメント

不規則に発生するバグに当たったり、何だか知らねぇけどロードアベレージが吹きそうな値になったり。昨日まで快適に動いてたSQLが今日になって鼻血出そうなくらい劣化したり・・・。

とか働いてると色々有るかと思いますが、その時点では原因は不明瞭にも関わらず相手に伝えなきゃいけない時ってありますよね。

とはいえ断言出来ないので↓のような文面に陥りがちだと思います。

リリース後暫くは大丈夫だったと思うのですが、
今日の午前中くらいに突然負荷が急騰しだしました。
MySQLが怪しいとは思うのですが恐らく何も変更を加えていないと考えられますので
MySQL以外となるとApacheの方だと推測されます。

思う。考えられる。推測されます。恐らく。ハァハァだってまだ何も分かってないんだもん!!

という気持ちは分かりますが伝える相手は恐らくもっと分かってません。

ので冒頭に全て推測です!!と断言してしまうとするっと抜けれそうだと。

以下、現時点で確認出来ている事象と要因となります。
午前中は安定稼動。
MySQLに構成変更無。
Apacheに主要因有り。

力強く言い切ってますが万が一MySQLに誰か爆発物仕込んでてもその時点では分かってなかったから良いもんねー。えへへへへ。

なんてぇ事を考えてみました。小さい事ですがするりするりと生き抜くためにこういうテクニックは身につけていきたいものです。

まぁ勿論、時と場合と相手によりますが・・・ね。

トラックバック - http://d.hatena.ne.jp/yumatsumo/20110816