User Profile Service卡在Starting的解决方法

 

User Profile Service(以下简称UPS)可能是SharePoint 2010中最头疼的服务之一了,问题多多。

在创建这个服务阶段会产生一系列问题。还好大神Spencer Harbar发表了一系列的博文来解决这个问题。精华都在Rational Guide to implementing SharePoint Server 2010 User Profile Synchronization

只要照着这个弄,没有解决不了的。

问题是对于一个服务器场存在不是一天两天的事情,这个服务太脆弱了,经常莫名其妙的挂。如果UPS服务挂了,所有访问User Profile Manager的代码都会异常。包括SharePoint自己的Welcome控件。

比如我项目中的一个服务器场,4台前段,2台应用服务器,一共6台服务器跑。一共6个同样的服务负载均衡。运行久了,部分服务器就会出现这个服务变成Starting的情况,并且街面上没有办法停止这个状态。

如下图所示:

事件日志中会产生类似SharePoint Web Services Round Robin Service Load Balancer Event: EndpointFailure错误信息。

ULS日志中没有特别明显的信息。

 

我到现在也不知道具体有什么样的原因会导致这个服务挂掉。可能是因为这个服务的负载比较大?

为了解决这个问题,只能 PowerShell来访问到这个服务,进行强制的初始化。

利用下面的命令来获取到当前服务器场所有的UPS服务实例:

$UPSInstances = Get-SPServiceInstance | ? {$_.GetType().ToString() -eq "Microsoft.Office.Server.Administration.UserProfileServiceInstance"}

利用下面命令来获得状态异常的UPS服务实例:

$StuckUPSInstances = $UPSInstances | ? {$_.Status -ne "Online"}

例如下面命令来重新初始化/启动UPS服务实例:

$StuckUPSInstances | ForEach-Object -Process { $_ | Start-SPServiceInstance }

等一会儿,就会看到服务就重新启动好了。

 

 

posted @ 2013-04-13 20:30  Lambert Qin  Views(6915)  Comments(1Edit  收藏  举报