我们的一位客户运行>与Alfresco合作的Citrix农场的800名用户(目前Alfresco Community 4.2.d)。多年来(即使使用cifs),这种方法完美无缺,直到citrix服务器从Windows Server 2003升级到2012R2。在新的2012R2客户端会话中,CIFS会话冻结并且会话丢失,这导致整个终端会话的定期挂起。
到目前为止我们发现了什么:
- 从WinServer 2003 MS开始使用Virtual Circuits
所有客户端终端会话只有一个共享tcp连接
在主机上运行。用户由VC编号属性
标识
- MS在其规范中声明VC = 0具有特殊功能:从该IP中删除所有会话
- Alfresco实施了该规范,但Windows Server 2012启动了VC = 0的终端会话!如果连接到Alfresco的第一个用户(vc = 0)与Alfresco CIFS(MNT-12290 disconnectClientSessions assumptions don't work on Terminal Servers)进行交互,则会导致会话删除
- 我们向后移植了由2实施的修补程序,并且还使用Alfresco 5.0.d进行了测试,但仍然看到了相同的问题:如果第一个用户使用CIFS进行通信,则会话会挂起。即使我们进行远程调试,我们也没有看到会话挂起时触及会话删除的更改代码。所以缺少一些东西。
- 在较旧的Win Server版本中,曾经有注册表参数“MultipleUsersOnConnection”来控制VC行为并强制为每个客户端建立新连接,但2012R2不再提供此连接
- 我们发现的唯一工作是通过设置像“alfresco_cifs”这样的通配符dns条目并使用唯一的服务器名称(例如“username%alfresco_cifs”)映射每个用户来强制执行不同的tcp连接并避免VC问题
有没有人更深入了解2012R2终端服务的VC处理以及为什么会话以VC = 0开始?
有没有人使用Windows Server 2012R2终端服务对任何版本的Alfresco使用CIFS进行工作配置,并且正在使用哪种技巧来运行它?
当然,一种策略是完全避免使用CIFS,但我们没有使用WebDAV或Share Point Protocoll作为挂载驱动器的良好经验。有许多conditioins可能会制止这种情况(使用名称,长路径中的特殊字符,......)
也许有人拥有其他可扩展且强大的解决方案,从终端会话连接到共享驱动器,以及使用CMIS,WebDAV,......等第三方解决方案。我们正在讨论开发一种新产品来使用REST映射驱动器,但又不想重新发明轮子......
期待任何见解/反馈!