0

在我们的部署中,我们在 LoadBalancer 后面有 3 个 OpenAM 实例,粘性基于 IP 地址,因此用户总是在同一台服务器上。

我的问题是,仅在一天的工作负载之后,我们的最大并发会话数就在每台服务器上达到了。

当我分析 amSSO 审计日志时,我发现我的 Web 代理 (amService-UrlAccessAgent) 经常打开会话(每分钟超过 20 个会话)并且这些会话永远不会被破坏(它们都活得很长:))。

你能帮我解释一下这种行为吗?amService-UrlAccessAgent 不应该记录一次吗?

提前谢谢。

4

2 回答 2

0

您的描述中有一些有趣的事情:

  • 如果您使用的是 Web 代理,那么为什么要将它与 amService-UrlAccessAgent 一起使用?您应该为您的代理创建一个 Web 代理配置文件并改用该帐户。
  • 目前尚不清楚您使用的是什么网络服务器,所以我假设它是 Apache。在这种情况下,请确保您没有使用 prefork 模式,推荐的 mpm 是 worker,因为它通常需要更少的代理登录。尽管如此,据我所知,一旦子进程死亡,代理总是会自行注销。
  • 您可能还想尝试使用较新版本的 webagent,如果此问题再次出现,甚至每晚使用一次。
于 2013-08-05T19:38:57.787 回答
0

我认为我得到了解决方案。当我开始深入研究 OpenAm 代码和代理代码时,我发现了以下内容

           if ((isApplicationModule(authMethName) && 
                (ad.isSuperUser(userDN) || ad.**isSpecialUser**(userDN)))
                || isAgent(amIdentityUser))
           if (isAgent(amIdentityUser) && agentSessionIdleTime > 0) {
                ....
                session.setMaxSessionTime(Long.MAX_VALUE/60);
                session.setMaxIdleTime(agentSessionIdleTime);
                session.setMaxCachingTime(agentSessionIdleTime);
            } else {
                session.setExpire(false);
            }

当您稍稍看之前,您发现如果未设置属性com.iplanet.am.session.agentsessionidletim ,则agentSessionIdleTime的值为 0。

要解释此属性的含义,请点击此链接:policy agent sessions to time out

感谢彼得的帮助。如果这在我们的生产系统上运行良好,我会很快告诉你。

于 2013-08-06T16:58:30.843 回答