MacBook が暴走することがしばしばあります。大した仕事をしていないのに、MacBook が熱くなって ファンが狂ったように廻り始めます。そういうものかと思っていたのですが、電源に接続されていないところでは、電気の消費が気になります。
いろいろ調べて、設定を作ったところ、ピタリと暴走がとまりました。Mac OS X のバグが原因らしいのですが、それほど深刻でもなさそうなので、近いうちに回収されると思います。
**現象
上に書いた通りなのですが、この現象が発生したときにプロセスの実行状況を眺めると dotmacsyncclient という名前のプロセスが暴走していることが分ります。今日も、ターミナル上で top コマンド使うと、dotmacsyncclient が CPU の99%を奪っていることが分りました。CPU が本気で動いているので、当然のことながら貴重なバッテリーを大量に消費しているはずです。
**参考になるサイト
このことについてGoogle先生にお訊ねしたところ得られたご神託:
– Apple Discussionsでの議論:[[MobileMe Sync going mad – “dotmacsync” process using 99% of one CPU’s time]]
+ 暴走は dotmacsync が接続に失敗したときに発生するらしい。これは Mac OS X のバグらしい。
+ いったん .Mac の同期に失敗すると、継続的に失敗するらしい。
~ 継続的なエラーを避けるためには、次の Apple Support の内容にしたがって対処するとよい。
+ これを避けるためには dotmacsync を殺すしかない。ターミナルで ”killall dotmacsync” を実行する。
~ これは一時的には有効だけれども、MobileMe との同期は 15 分ごとに始まるために、次の機会にまた暴走が発生してしまう。
+ そもそも接続に失敗する問題が本質的なのだけれども、これはネットワークのプロキシ設定で ”.pac” ファイルを用いた自動設定を選択しているときに発生するらしい。そこで、自動設定を手動設定に変更するとよいらしい。
– Apple Support:[[Mac OS X 10.5: Resetting the SyncServices folder:http://support.apple.com/kb/TS1627%5D%5D
**わたしの対処法
ひとまず、暴走している dotmacsyncclient を殺します。アクティビティモニタの GUI を使ってもできると思いますが、コマンド入力を厭わない人にとってはターミナルで以下を実行する方が簡単でしょう。
killall dotmacsyncclient
次にネットワーク設定の変更です。わたしがたまに利用している、大学の公共無線LANでは ”.pac” ファイルを利用したプロキシの自動設定が推奨されています。これが問題なので、まずブラウザで指定された ”[[.pacファイル:http://portal.titech.ac.jp/proxy.pac”%5D%5D をダウンロードします。つぎのこのファイルをテキストエディタで開くと、設定されるプロキシサーバの IP アドレスが得られます。わたしが使っている ”.pac” ファイルには以下の行があったので、IP アドレスが 131.112.125.90、利用しているポート番号が 3128 であることが分ります。
return “PROXY 131.112.125.90:3128″;
次に、公共無線LANのための接続設定を作成します。ネットワーク環境設定に東工大公共無線LANを意味する「Titech pubnet」を追加し、そのプロクシ設定に上述のプロキシサーバを指定しました。
これで準備ができたので、ネットワーク環境を「Titech pubnet」に変更します。
最後に、dotmacsync によって iSync の作業履歴が壊れている可能性があるので、これを初期化します。Apple Support の情報にしたがって、以下を実行します。
/System/Library/Frameworks/SyncServices.framework/Versions/A/Resources/resetsync.pl full
暴走を止め、iSync の作業履歴を初期化するためのスクリプトを用意しておくと便利かもしれませんね。ということで作ってみました。
#!/bin/sh
killall dotmacsyncclient
cd /System/Library/Frameworks/SyncServices.framework/Versions/A/Resources/
./resetsync.pl full
*追加情報
東工大の公共無線LANを利用するときには、最初に WIFI の認証を受け、つぎに東工大ポータルでの認証を受ける必要があります。この二番目の認証を受けるときに、前述のプロキシの手動設定をしていると認証ページが表示できないという問題に遭遇しました。わたしの設定がいいかげんなのだと思いますが、ひとまずの対処法は以下のとおりです。
+ ネットワーク環境としてMac OS X にデフォルトの自動を選択します。これにはプロクシの設定がないものと仮定します。
+ WIFI の認証、東工大ポータルの認証を通過したところで、ネットワーク設定を「Titech pubnet」に切り替えます。
たぶん、「プロキシ設定を使用しないホストとドメイン」を ”.pac” ファイルに合わせてもっと適切に設定すれば、スマートにできると思うのですが、よく分りません。
if (isInNet(host, “131.112.192.0”, “255.255.248.0”)) {
return “DIRECT”;
}
たとえば、上のような設定に対して、ぼくはプロキシの例外に ”131.112.192.*” と書いているのですが、”*” だと、”248” の部分がうまく書けてないような気がします。どう設定するものなんでしょう?ググレバカなんて言わないで教えてくれると嬉しいな。。。