Mac OS Xでサーバー part3

このエントリーをはてなブックマークに追加
910名称未設定
MacOS X をUnixとして使ってる人の為スレに質問したら
誘導されましたので、重複で読んでる方すみません。
------
NetInfoに6000アカウントほど登録したら、
ls -l /Users/myuser とか、chown myuser xxxとか
実行するの5〜10秒もかかるんですか、これって正常ですか?
chown×3000したら、6時間もかかりました。

ひょっとしてNetInfoの内部DBって
ユーザ名やuidの索引(index)作ってないんですかねー?

LDAP使ったらパフォーマンス改善するか知ってる人はいませんか?

それとサーバ管理アプリを使って、
NetInfoからLDAPに移行してみようと思いますが、
6000ユーザだとどれくらい時間がかかるか知ってる人はいませんか?
911名称未設定:2005/09/21(水) 10:16:47 ID:3Pf2kNA9
>>910
lookupdのcacheの設定をしてみてください。man 8 lookupd
cacheが効いてないと、LDAPにしても同じことです。

確かにnetinfodの性能はあまりよくないと思いますが、

> ユーザ名やuidの索引(index)作ってないんですかねー?

ということはないです。
ちなみに万を超えるユーザでも問題なし。NetInfo, LDAP両方で。
912910:2005/09/21(水) 15:15:31 ID:om4zAiDr
キャッシュは有効なようです。
topで見るとlookupdが90%ぐらい占めています。
以下lookupdの設定です。一部省略してます。

$ lookupd -configuration
ConfigSource: netinfo://127.0.0.1/local:/locations/lookupd
LookupOrder: Cache NI DS
MaxIdleServers: 4
MaxIdleThreads: 2
MaxThreads: 64
StatisticsEnabled: YES
TimeToLive: 43200
Timeout: 30
ValidateCache: YES
ValidationLatency: 15
_config_name: Global Configuration
name: lookupd

LookupOrder: Cache FF DNS NI DS
_config_name: Host Configuration

LookupOrder: Cache FF NI DS
_config_name: Service Configuration

LookupOrder: Cache FF NI DS
_config_name: Protocol Configuration

LookupOrder: Cache FF DNS NI DS
_config_name: Network Configuration
913910:2005/09/21(水) 15:16:33 ID:om4zAiDr
でもって以下がステータスです。

$ lookupd -statistics
# Total Memory: 93439
# build: root 2005.02.23 15:00:23 UTC
# version: 324.13
Cache: 326 130 49540
Cache all group: 3 2 0
Cache host ip_address: 70 7 15472
Cache host ipv6_address: 2 1 1134
Cache host name: 65 6 1
Cache user name: 152 86 32249
Cache user uid: 15 14 684
DNS: 119 115 79843
DNS host ip_address: 60 58 49165
DNS host name: 59 57 30678
Failed: 31 31 219284
Failed host ip_address: 2 2 21598
Failed host name: 2 2 2522
Failed user name: 27 27 195164
914910:2005/09/21(水) 15:17:05 ID:om4zAiDr
続きです。

NI: 73 42 410316
NI all group: 1 1 25333
NI host ip_address: 2 0 6475
NI host name: 2 0 2519
NI initgroups: 1 1 11603
NI query: 3 3 20505
NI user name: 63 36 341590
NI user uid: 1 1 2291
all group: 3 3 25449
host ip_address: 68 66 102509
host ipv6_address: 2 2 1134
host name: 65 63 42847
initgroups: 3 3 11604
query: 3 3 20509
total: 321 290 690339
user name: 149 122 474597
user uid: 15 15 11689
915910:2005/09/21(水) 15:44:17 ID:om4zAiDr
ググって出てくるものより、
かなり1回あたりの時間がかかってるのがおかしいですねー。

試しにキャッシュを切ってみましたが、余計に時間がかかるようになりました。
ですので、ValidationLatencyを180にしてみましたが、
効果はあまり無いようです。

参考URL
http://developer.apple.com/documentation/Darwin/Reference/ManPages/man8/lookupd.8.html
http://www.macdevcenter.com/mac/2003/08/05/graphics/opendir-macdrv.gif
916名称未設定:2005/09/21(水) 15:53:23 ID:QJnaIb4j
キャッシュクリアーとか再構築とか・・・??
917910:2005/09/21(水) 16:05:07 ID:om4zAiDr
>>916
OSごと再起動しても変化無かったので、
キャッシュは問題なさそうですねー。

再構築はどこかやるところありますかねー?
lookupdはデータファイルを持ってないみたいです。

NetInfoの登録内容を1回登録し直してみるのは、
あまりに時間がかかりすぎるので難しいですね。
918910:2005/09/22(木) 05:30:14 ID:dXqbkWgq
いろいろかかっている時間を計測してみました。
キャッシュでヒットしないようにユーザ名を変えてます。

# time dscl . -read /Users/myuser1 > /dev/null
real 0m2.194s
user 0m0.010s
sys 0m0.010s
# time nicl . -read /users/myuser2 > /dev/null
real 0m0.008s
user 0m0.000s
sys 0m0.010s
# time id myuser3 > /dev/null
real 0m2.351s
user 0m0.000s
sys 0m0.000s
919910:2005/09/22(木) 05:30:45 ID:dXqbkWgq
次に上のを100回ずつ実行してキャッシュに
ヒットするように検索してみました。

# time ./benchmark_dscl100.sh > /dev/null
real 0m9.080s
user 0m1.490s
sys 0m1.390s
# time ./benchmark_nicl100.sh > /dev/nell
real 0m0.985s
user 0m0.150s
sys 0m0.740s
# time ./benchmark_id100.sh > /dev/null
real 0m3.097s
user 0m0.120s
sys 0m0.590s
920910:2005/09/22(木) 05:31:17 ID:dXqbkWgq
上のを実行してる間top -o cpuで見てると以下のプロセスが動いてました。

dscl: DirectoryService netinfod
nicl: netinfod
id: lookupd

まとめるとNetInfo自体は早いけど、
dscl(DirectoryService)とgetpwnamなど(lookupd)が
NetInfoアクセスするときに時間がかかってると言うことになりますね。

このスピードが正常なんでしょうか?
どこか設定を変えると早くなったりしませんか?
921>>911:2005/09/22(木) 10:13:29 ID:sE1tqdbU
>>910
1. MaxIdleServers, MaxIdleThreads, MaxThreadsを増やしてください。
 足りなくてリクエスト待ちになっている可能性があります。
 他にもdaemonその他が動いていますからね。
2. ValidationLatencyはもっと大きくしてください。500くらいには。
 versionが古くて全体で一つの設定しか持てないのかな?
 個別に持てるようなら時間のかかっているuser, hostを大きく、駄目なら全体を。
3. StatisticsEnabledを切った状態でもベンチしてみてください。
4. NetInfoにもローカルホスト名登録してある場合、NI DNSがベター。
 速度のオーダーが違うDNSは別扱いに。

922910:2005/09/22(木) 20:05:34 ID:dXqbkWgq
>>921
レスありがとうございます。
1〜3はやってみたのですが、やはりまだキャッシュに
入っていないユーザのlookupには時間がかかるようです。

なんとかlookupdを通らずにNetInfoかLDAPに
アクセスさせる方法ってありませんかねー?

現在Courier-IMAP、Postfix、Proftpd、Apacheをテスト稼働させてますので、
Courier-IMAP、Proftpdを直接LDAPにアクセスさせるように設定すれば、
少しはマシになるかなと思います。

ただPostfixだけはどうしてもlookupdを通さないといけないようですので、
大量にメールを送受信した場合に、smtpd、local、cleanup、proxymapなどが
大量に立ち上がり、すぐにサーバ負荷が100%になってしまうようです。

このまま解決できないようだと、せっかく買ったXserveとXserve RAIDを破棄して、
Linuxを使わなければいけなくなりそうです。
長年のMacユーザとして、それは出来るだけ避けたいので、
ご助言をよろしくお願いします。
923>>911:2005/09/23(金) 02:25:16 ID:53GqhO6d
>>922
> やはりまだキャッシュに
> 入っていないユーザのlookupには時間がかかるようです。

既にこれ以上出す手はないかどうかは不明だが、
それは仕方ない面もある。
lookupdのコードを読めば分かるが、cacheを扱うコードが糞(初心者プログラマ?)なので、
cacheエントリのadd/deleteに時間がかかる。
cacheエントリは出来うる限り長く有効である設定にするのが良い。
あるいはValidateCacheを、さらにCacheAgentを無効にするか。
# 一台運用みたいだから、CacheAgentは必要ないかもしれない。

> なんとかlookupdを通らずにNetInfoかLDAPに
> アクセスさせる方法ってありませんかねー?

基本的にない。(アプリ、サーバに設定がある場合を除いて)
Mac OS Xの世界では全てOpen Directory経由ということになっている。

> このまま解決できないようだと、せっかく買ったXserveとXserve RAIDを破棄して、
> Linuxを使わなければいけなくなりそうです。

Linuxを勧めます。lookupdよりnss/pamの方がまともだし…
924>>911:2005/09/23(金) 02:26:06 ID:53GqhO6d
それからlookupdはしょっちゅう落ちてるよ。
LogFile観てみれば分かると思うけれど。
925名称未設定:2005/09/23(金) 03:03:39 ID:LlnlKzpx
XserveはともかくXserve RAIDはLinuxでもFreeBSDでも使えるから良いじゃん。
まぁXserveにLinux入れて使っている人も居るし。
926910:2005/09/23(金) 03:42:06 ID:yqR8/d09
>>923
私もちょうど以下からnetinfoのソースをダウンロードして、
lookupdのソースを読んでました。
http://darwinsource.opendarwin.org/10.3.9/

niclなどのソースと比較して、かなりいろいろな処理をやってるみたいですね。
ただどこに時間がかかってるのかまでは分かりませんでした。

>>925
なるほど。XserveにLinux入れるというのは、ありかもしれませんね。
いつも使ってるRedHatが動くようですし。
ちょっと調べてみます。
927910:2005/09/23(金) 03:49:40 ID:yqR8/d09
>>926
早とちりでした。RedHatが対応してるのは、
IBM POWER, zSeries & S/390だけでした。
928名称未設定:2005/09/24(土) 01:52:41 ID:o6HqcK34
>>926
http://www.netbsd.org/Ports/macppc/

ほかにも動くものがあると思う。
929名称未設定:2005/09/24(土) 03:32:25 ID:/6xvDShr
まぁVineLinux PPCとかYellowDogとかね。
でもオレだったらわざわざXserve G5にLinux入れないな。
Mac OS X Server unlimitのライセンスも浮いちゃうし。
別の1UサーバーをDellあたりで買って使う。
930910:2005/09/24(土) 05:15:28 ID:KDWkqkHG
>>928-929
情報ありがとうございます。
私もいろいろ調べたのですが、XserveにLinuxやBSDを入れる場合
いくつか気になる点があります。

まずファンコントロールが出来ずに
ファンが100%回りっぱなしになりそうということ。
これはFedoraのニュースリリース読んでると現在作業中と書いてありました。
最新版ではすでに対応しているのかもしれません。

次にApple Fibre Channel PCI-X カードのドライバがあるのかどうか不明なこと。
これは実際にインストールして試してみるしかないかなと思います。

>>929
私も別サーバを用意して、Xserveは他の用途に使った方がいいかなと思っています。
ただ別サーバを用意すると、FC HBAカードを買わなければいけないため、
サーバ代と合わせて40〜50万の出費になってしまいます。
ちょっと痛いですねー。