web-dev-qa-db-ja.com

Apacheによるwinbind認証が遅い

Samba/winbindでActiveDirectoryを使用してユーザーを認証するためのLinuxマシンのセットアップがあります。

次に、Apacheは、それを使用してユーザーを認証するようにセットアップされます。これは、以下を使用して行われます。

<IfModule mod_authnz_external.c>
    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe
</IfModule>

しかし、認証なしで1秒未満かかるページリクエストは、6秒以上かかるようになりました。 /var/log/samba/log.winbinddのログインを見るとエラーは表示されませんが、ページの読み込みごとに多くの認証要求が必要なようです。基本的に、たとえばcssファイルごとに、ロードされたリソースごとに1つの認証があるようです。

/etc/samba/smb.confで、winbind cache time = 300winbind offline logon = yesなどの設定を試してみました。また、idmapバックエンドをtdbからadに変更しようとしました。

ページの読み込み中に、winbinddのCPU使用率は非常に高くなり、約50〜60%になりますが、他のプロセスは10〜20%を超えないようです。

これをスピードアップできるいくつかの設定を見逃しましたか、またはこの問題へのより良いアプローチがありますか(mod_authnz_external以外のものを使用するなど)?

2
Zitrax

Mod_authnz_externalを使用するときにパフォーマンスを改善する方法がまだ見つかりませんでした。ただし、別のApacheモジュールmod_authnz_ldapに変更すると、パフォーマンスの問題が解消されました。唯一の欠点は、LDAP構成がシステムとApacheで重複していることです。

3
Zitrax

クライアントとしてUbuntu18.04を使用し、サーバーとしてSamba 4.7.8を使用する同様のセットアップでは、pwauthを使用した1つの認証に約200ミリ秒かかりますが、これはSVN操作には受け入れられません。単純なリポジトリリストは非常に多くのリクエストを使用するためです。

authn_socacheを認証キャッシュとしてロードすると(例にはauthnz_externalおよびauthz_unixgroupが含まれます)、次の設定でパフォーマンスが向上します。

<Location /svn>
     DAV svn
     SVNParentPath /var/local/svn/
     SVNListParentPath on
     AuthType Basic
     AuthName "private area"
     AuthBasicProvider socache external
     AuthExternal pwauth
     AuthExternalProvideCache on
     AuthnCacheProvideFor external
     AuthnCacheTimeout 300
     Require unix-group svngroup
</Location>

AuthExternalProvideCache Onは重要です。そうでない場合、authnz_externalはログインをキャッシュしません。

0
Robert James