我在Intranet上有一个asp.net mvc网站。对站点的访问权限由活动目录中的组确定。有4个不同的组,每个组在站点中具有不同的访问权限。我偶尔会遇到网站运行缓慢的问题。该网站将运行好几天,然后突然慢慢爬行。我有一个测试站点和一个生产站点。当发生减速时,两个站点都会受到同等影响。我还有一个测试站点,该站点没有活动目录访问权限,并且在这两个站点正在爬行时它运行没有问题。我遇到问题的网站在用户帐户下运行,因为应用程序必须联系Intranet上的另一个共享才能打印和合并pdf文件。这些站点在同一应用程序池下运行。出现问题时,即使没有数据库活动的页面,所有页面也同样慢。出现问题时,我重置IIS,重新启动网站,并回收线程。实际解决问题的唯一方法是重新启动服务器。有时需要额外重启才能使网站恢复正常。以下是我尝试过的一些事情。似乎问题发生的次数较少,但仍然会发生。 1.减少查询活动目录的次数。 2.出现问题时重置IIS。这没有帮助。 3.回收应用程序池。 4.重新启动sql server服务 5.确保在引用服务器时使用完全限定名称。这似乎减少了一些问题。不过不确定。我在Windows 2008服务器上使用IIS 7,64位。
user = ConfigurationManager.AppSettings["TravelCardUser.AD_GroupName"];
approver = ConfigurationManager.AppSettings["TravelCardApprover.AD_GroupName"];
maintenance = ConfigurationManager.AppSettings["TravelCardMaintenance.AD_GroupName"];
admin = ConfigurationManager.AppSettings["TravelCardAdmin.AD_GroupName"];
testuser = ConfigurationManager.AppSettings["TestUser"];
List<string> adgroups = new List<string>();
adgroups.Add(admin);
adgroups.Add(approver);
adgroups.Add(maintenance);
adgroups.Add(user);
this.groups = adgroups;
List<string> groupmembership = new List<string>();
foreach (var group in groups)
{
if (!String.IsNullOrEmpty(testuser))
{
this.username = testuser;
}
else
{
this.username = currentloggedinuser;
}
using (var ctx = new PrincipalContext(ContextType.Domain))
using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, group))
using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, username))
{
if (groupPrincipal != null)
{
try
{
if (userPrincipal.IsMemberOf(groupPrincipal))
{
groupmembership.Add(group);
}
}
catch (Exception ex)
{
string theexception = ex.ToString();
}
}
}
}
这是我的ldap连接字符串。
<add name="ADConnectionString_UserRole" connectionString="LDAP://locationX/cn=TravelCardUser,ou=LocationXgroupsGroups,dc=acme,dc=us,dc=com" />
答案 0 :(得分:0)
Ther服务器每3或4天放慢速度,因此我将应用程序池关闭到我的应用程序,并使用Sysinternals监视进程3天。
http://technet.microsoft.com/en-us/sysinternals/bb896653
我看到与sequal服务器和团队基础服务器相关的进程正在抓取资源但不释放它们。顺便说一句,我通过Red Gate Memory Profiler运行我的asp.net代码,没有内存泄漏。现在我必须弄清楚如何处理内存使用问题。