Share Point 2010自从去年10月份安装后一直运行正常,我们公司的Loading也不重,但最近服务器内存持续增加,最后吃掉了所有内存造成系统崩溃。
经检查持续占用内存的服务是Share Point 2010 Timer对应Process为OSWTimer.exe。
查询日志后发现以下错误:
11/14/2011 12:25:57.72 OWSTIMER.EXE (0x1ECC) 0x18EC SharePoint Foundation Performance naqx Monitorable Potentially excessive number of SPRequest objects (23) currently unreleased on thread 10. Ensure that this object or its parent (such as an SPWeb or SPSite) is being properly disposed. This object is holding on to a separate native heap. Allocation Id for this object: {02E1C16E-6BB0-4E47-AA02-8300C60C9649} Stack trace of current allocation:
at Microsoft.SharePoint.SPGlobal.CreateSPRequestAndSetIdentity(SPSite site, String name, Boolean bNotGlobalAdminCode, String strUrl, Boolean bNotAddToContext, Byte[] UserToken, String userName, Boolean bIgnoreTokenTimeout, Boolean bAsAnonymous)
at Microsoft.SharePoint.SPWeb.InitializeSPRequest()
at Microsoft.SharePoint.SPSite.OpenWeb(Guid gWebId, Int32 mondoHint)
at Microsoft.SharePoint.Workflow.SPWinOEWSSService.GetWebForWorkflow(SPWork... af5ba39d-f19e-4c67-9836-d10813eeca6f
Share Point 2010 Timer是Share Point的定时服务。进入Share Point Administrator的Running Job页面,发现有一个叫做Work Flow的Job Definition没有执行完。
综合以上日志初步判断是Work Flow Job Definition中打开Share Point页面(Microsoft.SharePoint.SPSite.OpenWeb)没有释放造成的。将该Job Definition Disable后问题暂时解决。
我们只有一个站点使用了自定义的Work Flow,但将该站点删除后仍旧存在问题。
查询大量资料后在微软的官方论坛中发现以下解决方案:
补丁链接:
http://support.microsoft.com/hotfix/KBHotfix.aspx?kbln=en-us&kbnum=2512804
更新补丁后问题果然解决。
看来今后有不能解决的问题直接打补丁得了,省得浪费时间。