910 :
名称未設定 :
2005/09/21(水) 09:28:39 ID:om4zAiDr 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両方で。
912 :
910 :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
913 :
910 :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
914 :
910 :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
915 :
910 :2005/09/21(水) 15:44:17 ID:om4zAiDr
916 :
名称未設定 :2005/09/21(水) 15:53:23 ID:QJnaIb4j
キャッシュクリアーとか再構築とか・・・??
917 :
910 :2005/09/21(水) 16:05:07 ID:om4zAiDr
>>916 OSごと再起動しても変化無かったので、
キャッシュは問題なさそうですねー。
再構築はどこかやるところありますかねー?
lookupdはデータファイルを持ってないみたいです。
NetInfoの登録内容を1回登録し直してみるのは、
あまりに時間がかかりすぎるので難しいですね。
918 :
910 :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
919 :
910 :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
920 :
910 :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は別扱いに。
922 :
910 :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入れて使っている人も居るし。
926 :
910 :2005/09/23(金) 03:42:06 ID:yqR8/d09
927 :
910 :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
929 :
名称未設定 :2005/09/24(土) 03:32:25 ID:/6xvDShr
まぁVineLinux PPCとかYellowDogとかね。 でもオレだったらわざわざXserve G5にLinux入れないな。 Mac OS X Server unlimitのライセンスも浮いちゃうし。 別の1UサーバーをDellあたりで買って使う。
930 :
910 :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万の出費になってしまいます。
ちょっと痛いですねー。