问题描述

Lync 2010客户端出现追随者数量已达上限的提示,出现该问题的用户是随机出现的,并且通过让Lync进行多次注销登录后,问题就消失了。通过命令多次调整也无法根除该问题。

报错截图如下:

image

问题出现环境

Lync 系统:Lync Server 2010 企业版

操作系统:Windows2008 R2 SP1 标准版 中文 64位

用户数量:1000

问题重现

问题无法按计划重现,该问题是随机出现,并且在几小时后自动消失,或者通过手动对Lync 客户出现多次注销和登录后消失

问题分析

网络比较多的方式就是修改一些参数并调大一些参数,其实不太建议调整,因为调大参数并不能解决问题,而且还将系统的问题遗漏下去。

为什么这么说呢,在这里给大家详细分析一下。

首先为什么会出现追随者数量已达上限这个问题呢?

1、 Lync server 2010 的默认系统配置用户的类别订阅数是1000,由CsPresencePolicy 中的MaxCategorySubscription 来决定,可通过命令Set-CsPresencePolicy来调整,MaxCategorySubscription 可以设置为 0 到 3000 之间的任意整数值,所以用户的类别订阅数最大数是3000

2、 CsPresencePolicy 还有另一个参数MaxPromptedSubscriber,MaxPromptedSubscriber用户在任何时候可以拥有的提示订阅者的最大数目。默认情况下,每次将您添加到其他用户的联系人列表中时,屏幕上都会显示一个通知对话框向您告知这一情况,并使您有机会执行如下操作:将该用户添加到您自己的联系人列表中,或阻止该用户查看您的状态。在采取措施并关闭该对话框之前,每个通知都计为一个提示订阅者。这个参数可以设置为 0 到 600 之间(包含边界值)的任意整数值;默认值为 200。如果将该值设置为 0,则用户在被添加到其他用户的联系人列表时不会收到任何通知。

3、 一个用户user1(称作Publisher)被用户user2(称作Subscriber)添加到user2的联系人列表,通常是类别订阅包括calendarData,contactCard,note,state,services五个类别。通常MaxPromptedSubscriber与MaxCategorySubscription的值设置为1:5。可通过在Lync 的后台数据库进行查询,如下图的五个类别

image

4、 当用户的类别订阅数达到或超过MaxCategorySubscription定义的数值,就会出现追随者数量已达上限这个问题。

可通过在Lync 的后台数据库进行查询,显示用户user1@contoso.com(Publisher)的类别订阅数为5

image

可通过在Lync 的后台数据库进行查询,查询类别订阅数大于等于n(此例为n=5)的用户(Publishers)

image

简单举个例子:

如果用户user1的最大类别订阅数(MaxCategorySubscription)设为15,用户user1 已经被User2、user3和user4添加为联系人,当user2同时在PC和手机上登录时,用户user1的类别订阅数就会变成10,另一个订阅用户user1的用户user3先在手机上登录时用户user1的类别订阅数就会变成是15,如果此时User4或者任何订阅了用户user1的用户(包括user2和user3)登录时就会从联系人列表上看到user1追随者数量已达上限。

网络有一些方法只能临时的解决一下,不太建议盲目执行,如:

将联系人的添加数量调到最大

Set-CsClientPolicy -Identity Global -MaximumNumberOfContacts 1000 -MaximumDGsAllowedInContactList 64

Set-CsUserServicesConfiguration -Identity Global -MaxContacts 1000

然后又将类别订阅数调到最大

Set-CsPresencePolicy -MaxPromptedSubscriber 600 -MaxCategorySubscription 3000

但是,如果将这些值都到最大了,日后,总有一天用户会达到这个数,而到那时,你已经无法将值再增大了。

所以,在这里我建议,如果已经调整过的,在没有出现问题之前,先调整回来,微软的默认值是有他的理由的。

建议:最大联系人(MaxContacts)是默认值 250,MaxPromptedSubscriber 为200,然后类别订阅数(MaxCategorySubscription)可以稍微调大一点:1000~1800。

好了,明白了Lync 2010 这个问题的原因,这时,应该明白了不能随便调整参数了。

问题解决

那么应该怎么解决这个问题呢?

l 方法一(推荐):让用户删除一些不常联系的联系人,以降低类别订阅数。Lync 的用户最大联系人数建议不要超过250 ,一个部门能与公司250 个人经常联系这真的是很少有的,不要将企业协作工具与QQ相比。提醒用户,就算不添加对方为联系人,同样是可以进行沟通协作的,并且可以通过搜索的方式找到联系人。另外,如果确实有特殊要求的,像领导人物的,可以单独创建一条CsClientPolicy、CsPresencePolicy和CsPresencePolicy策略,然后将参数调整好,将策略单独应用给个别的用户。

l 方法二:清空用户的订阅类别数,目前只能通过在lync 的后台 SQL 数据库中进行删除。但是如果要清空,就连用户的联系人列表,以及自定义分组也会清除,相当于重置所有用户的联系人列表。然后再可以通过第三方的脚本工具统一向用户导入联系人分组列表。

请先备份RTC-FULL数据。

image

2. 在所有的前端服务器上暂停Lync服务。

3.在SQL上按下面顺序执行指令删除下面三个表格(有大小写之分):

Delete from ContactGroupAssoc

Delete from ContactGroup

Delete from Contact

4. 在所有前端服务器上重新启动Lync服务。

5. 客户端重新登录,所有联系人(包括经常联系人)都被删除。

l 方法三:通过第三方二次开发,不使用lync 系统的联系人列表分组。

最后建议

如何有效控制追随者数量已达上限的问题

==============================================

1.首先具体了解一下客户在添加联系人的实际需求和常用查找联系人的方法。在一个企业/组织内部,可以根据业务和工作联系的密切程度,适当添加联系人到列表中,但如果联系人列表添加的联系人很多时,比如两三百人,在联系人列表中去找到一个人也不容易,一般用户经常也可能是直接输入联系人的名字去查找。这时种情况是否可以精简一下联系人列表。

2.根据业务和工作联系的密切程度以及客户的实际情况限制某些用户合理订阅(追随)其他用户的数量。比如某部门的基层员工的工作接口只限于部门内部的某个小组,可以适当限制该用户可添加联系人的数目。

可以用以下两个参数实现限制所有用户和某些用户允许添加的最大联系人数目。说明:当一个用户A添加另一用户B到用户A的联系人列表时,用户A在一个客户端登录时,就相当用户A订阅了用户B的类别数为5。

a)Set-CsUserServicesConfiguration -Identity Global -MaxContacts <最大联系人数>

这里设置用户可以拥有的最大联系人数;默认值是 250。MaxContacts 属性代表用户可以拥有的联系人的绝对最大数量。但是,可以使用 CsClientPolicy cmdlet 限制某些用户的最大联系人数量,使其小于 MaxContacts 的值。

更多详细内容请见:http://technet.microsoft.com/zh-cn/library/gg398340.aspx

b)Set-CsClientPolicy -Identity Global/Filter -MaximumNumberOfContacts <最大联系人数> -MaximumDGsAllowedInContactList <最大通讯组数>

MaximumNumberOfContacts指示一个用户最多允许拥有的联系人个数。联系人个数最大值可以设置为 0 和 1000 之间的任意整数值(包含边界值)。设置为 0,则阻止用户拥有联系人。

更多详细内容请见:http://technet.microsoft.com/zh-cn/library/gg398300.aspx