防止XenApp系统资源被使用过度的三种方案

防止XenApp系统资源被使用过度的三种方案

本文是在今天方案1在用户现场测试基本有效的基础上总结的。用户的需求是这样的:假如我的应用使用XenApp发布,由于程序自身的原因,一个用户的虚拟应用进程在服务器端造成CPU,内存或者磁盘IO被过度使用,甚至达到100%的极限情况;这样其它同在一个XenApp服务器上的其它在线用户有可能被影响,甚至于导致这些用户都无法使用。首先这个情况并没有在任何用户的实施场景中听说出现过,个人认为是一个相当极限的情况。但是,既然用户有这个担心,那么还是需要提出一个分析控制的方法。研究了一番只有,我找到了3个解决问题的方案。

方案1:使用微软Windows System Resource Management(WSRM)来按应用进程限制资源分配极限
什么是Windows System Resource Management?
怎么安装WSRM?如果是Windows2003的系统,需要下载安装文件,网址在:http://download.microsoft.com/download/f/4/4/f44b87d1-04c6-48f7-95ea-69aa11252e11/X11-04295.iso;如果是Windows2008的系统,在系统功能中可以添加到这个功能,不要特别的安装文件。
怎么启动配置界面?win2003中,在命令行中mmc,选择添加模块,找到Windows System Resource Management模块即可;win2008中,安装完毕之后,直接在菜单中能够找到。
怎么配置资源分配控制策略?
下面是一个完整的配置过程,我使用notepad模拟一个叫做H2000-Notepad的程序,把它放在C根下。配置了每个进程使用CPU和内存的上限。其实还可以加上其它的限制策略:日历时间,用户和组。


方案上榜理由: 操作系统的层面的问题交给操作系统自身功能解决,WSRM方法实施起来简单易行

 

  • 这个功能是Windows 2003/2008操作系统本身自带的功能,在企业版和数据中心版本中可以免费使用
  • 策略配置可以满足要求,能够按应用,可以指定到用户和组,可以设定时间条件,可以控制CPU和内存的分配规则,以及超出限制后的处理方式

方案2:使用XenApp内置负载均衡策略+XenServer动态内存管理功能
从CPU资源分配的控制角度看,XenApp内置了非常完善的策略。策略的在文档,猛击这里:管理服务器和资源负载;首先XenApp服务器如何评价服务器是否已经满载,评估的条件很多,清单在这里:负载管理规则;那么ZDC通过这些条件就能够判断是否会把用户请求发到某个机器上,而且负载的评估也是有ZDC动态地实时监控的,很可能还没有达到任何一个极限值,就已经满载了,那么这就是用户所担心的极限情况的出现,如程序的Bug或者数据正常处理过程中的系统异常。ZDC有了这些规则之后,首先不会使情况恶化,也就是不会在分配新的用户使用某个服务器。那么,假如某个服务器已经发生了异常情况了,XenApp还有什么措施可以防止情况的进一步恶化。这里我们看到XenApp也不是吃素的,它通过多用户的负载均衡机制,按策略分配CPU资源,防止饿的被饿死,吃撑的被撑死的情况发生。它提供两种CPU资源分配策略:1)平均分配,也就是吃大锅饭,人人都得到相等份额的CPU资源,谁想多吃多占,没门;2)特权分配,这种情况下,需要看程序和用户的重要性,应用的重要度是在发布的时候能够分配的,一共高中低三个档次。虚拟应用会话实例的重要性,还要看使用应用的人的账户。例如:都是Notes的客户端,一个领导的账户和其它三个普通员工的账户同在一个服务器上使用;那么领导获得的cpu资源可以很高份额,以保证这个系统的重要客户的使用度;说白了,这叫做“特权共享”,或者“重要度”共享。这个策略在服务器满载指标的前提下,能够有效的控制以在线用户的系统资源分摊使用情况,防止某个用户的异常情况下,系统资源的滥用,由于CPU资源被控制为共享的,想多吃多占也没门。另外从内存资源的控制角度看,我觉得可以使用放的策略,XenServer有动态内存管理功能,假设你把内存的范围设置到4~6GB,甚至更高的上限,那么当有个程序内存异常了,我就放你一马,让你多用一些,反正系统的弹性还大着呢!那么在这个过程中EdgeSight系统监控的功能早就把这个内存超高的报警汇报给了网管,网管可以在系统中主动干预这个异常,标记为该服务器不可用,主动联系用户,保存工作场景,重新登陆一次,把用户都转移到其它正常的服务器上。综上,CPU使用控制的方式,内存使用扩大使用范围的方式;一收一放,两手抓,两手都要硬的策略来控制系统资源的分配。
方案上榜理由: XenApp相关的问题,由产品自身的功能来保障,实施工作量最低,一个产品搞定

方案3:使用AppSense来控制
这是Citrix认证的第三方配套管理软件,通过它的资源保障功能,可以按用户和应用的单位来分配CPU,内存和磁盘资源的使用。本产品在国外很多项目在用,效果很好。产品介绍网址:http://www.appsense.com/resource-entitlement
方案上榜理由: 这种相当专业客户需求就需要用专门的管理工具解决,可以达到最专业的控制效果。

最后,这种资源负载均衡/控制的方案,最好不要混合使用;例如我之前的一错误想法:使用WSRM+XenApp的并行方案。

致谢:SongYe提议WSRM方案;SimonQiu提供方案2的咨询;KevinCui提议AppSense方案;

Posted in XenApp  | Leave a response