我们可以想象一下以下场景:
- 用户登录WI,然后点击启动应用程序,等待会话创建完成后应用启动后,使用一会,关闭退出
- 过了一会他又要使用该应用程序,又得等待会话创建后应用启动
- 如此往复
由于用户在退出应用程序以后,用户的会话可能在短时间服务器已经注销退出,导致用户再次启动应用程序时,需要重新创建会话(Session Sharing),也就增加了启动应用程序的启动延时,对用户的体验不太好。
最近发现ETIENNE JEANNEAU发布了一个小工具KeepMeLoggedIn Tool,Citrix在放到了KB上,参考:CTX128579
KeepMeLoggedIn Tool主要用来帮助用户保持会话,减少会话创建的时间,从而实现快速启动应用程序。在新应用程序启动的过程中,KeepMeLoggedIn Tool会重用(Re-Using)已经存在的会话。
注意:KeepMeLoggedIn只工作在ICA会话中,但是XenApp发布的桌面中不起作用,而且RDP会话也肯定是没用的。
该软件需要安装Microsoft Visual C++ 2010 Redistributable Package (x86)
KeepMeLoggedIn安装方法:
I、针对2008和2008R2
- 复制KeepMeLoggedIn.exe到C:\User\Public目录
- 修改注册表123Name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonType: REG_SZValue: Userinit = C:\Windows\system32\userinit.exe,c:\Users\Public\KeepMeLoggedIn.exe
II、针对2003
- 复制KeepMeLoggedIn.exe到C:\Document and Settings\All Users\
- 修改注册表123Name: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinlogonType: REG_SZValue: Userinit = C:\Windows\system32\userinit.exe,"C:\Document and Settings\ All Users\KeepMeLoggedIn.exe"
使用配置KeepMeLoggedIn:
KeepMeLoggedIn默认会话超时时间是120秒,也就是说,应用程序退出后,120秒内没有应用程序启动,会话将退出,配置超时时间方法如下:
I、32位系统修改如下注册表键值
1 2 3 | Name: HKEY_LOCAL_MACHINE\Software\Citrix\KeepMeLoggedIn Type: REG_DWORD Value: Timeout = time in seconds (decimal value) |
1 2 3 | Name: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Citrix\KeepMeLoggedIn Type: REG_DWORD Value: Timeout = time in seconds (decimal value) |
感觉这个不适应。大约新版XA6.5加入了这个功能,但也带来了缺点,例如许可/TS终端紧张的用户,还有该会话的保持会是个什么进程?
一般做好启动优化与多台会话共享,还有XA服务器的细节优化,启动时的进度条用户都可接受。除非网络延迟太高。
XA6.5的功能是由Receiver来实现,和这个原理还不一样。
究竟如何来考量这个功能,就看用户对LIC以及启动速度的容忍度了。
优化是没问题,但是会话的创建必定会被会话复用的时间长比较多,特别是在生产环境,大型域环境。多台会话共享,会消耗更多的服务器资源。
其实还是个度的问题,究竟如何来做,用户才可以接受而且更满意,就看大家怎么推,用户怎么想了。
这个KeepMeLoggedIn工具我试了一下,有很多问题,一个是就是不知道为什么有的用户启动APP以后会新建一个KeepMeLoggedIn进程,有的用户却不会,还一个就是即使用户能够启动KeepMeLoggedIn进程,在他退出应用程序以后,这个进程也会立即结束,而不是像本身描述的那样有120秒的时间,在注册表中新建键值来设置时间也没有效果…