由于业务的复杂性,我们在客户环境部署的时候,采用的是预装好在一台机器然后再把机器安装到客户环境,所以为了简单方便,我们把所有的服务都安装到一台机器上面了.

在正常的使用过程中是没有任何问题的.但是当有一些复杂的计算资源的时候,就会造成计算资源争抢

我们的诉求很明显,就是所有服务可以正常运行,这个时候我们就需要限制那些高计算资源占用的服务.

此处对于造成我们CPU计算资源的两个应用服务分别叫A和B和数据库服务D

A和B都是托管于IIS中,D是sql server 2014服务

A是计算资源争抢的元凶,所以我们需要对A服务限制其CPU计算资源的使用

方案一:限制A服务的最大计算资源使用百分比

在我们的IIS的应用程序高级池的高级设置中,有CPU设置相关参数如下图

我们将限制设置成70%,然后将限制的操作(LimitAction)设置成Throttle

具体参数什么意思可参考下图,图片文档链接

设置完成上图参数后我们还需要设置一下监视间隔,发现最小1min,也就是说如果发生超出指定比例的资源争抢,操作系统也可能需要1min之后才能发现并释放资源.

显然这个时间间隔对于线上环境是无法忍受的

测试后发现基本和预期一样,1min太长了,直接导致B服务无法响应用户需求

方案一宣布失败

方案二:指定应用使用的CPU核心

同样在IIS对应的应用的程序池的高级设置中的CPU配置卡片中进行相关操作

我们主要是需要用到ProcessorAffinity这个参数,去启用处理器关联掩码

1.将Processor Affinity Enabled设置成 ture

2.设置关联的CPU核心.

第2步设计比较繁琐,我们需要设置每个CPU核心的掩码

根据微软官方文档介绍,我们需要转成16进制进行设置,官方文档如下截图

  其大致意思是CPU的掩码是从右往左开始数的,以二进制掩码进行标识.第一位是标识符第二位如果是1则使用第一个核心,某一位是0则不启用对应位置的cpu核心,

将得到的二进制换算成16进制填入参数就行

  我们当前机器的CPU是16核心的,如果所有的核心都允许该应用使用的话则二进制标识就是 0b 1111111111111111,其中0b标识的该数字是二进制.

  我们当前的核心中前5个核心留给其他应用,只给A应用使用后面的11个核心,则我们的二进制标识则是  0b 1111111111100000,

将0b 1111111111100000换成16进制就是  0xffe0,其中是0x是16进制的标识.

  我们将生成的参数0x1ffc0填入Processor Affinity Mask和Processor Affinity Mask(64)两处,效果如下图

至此方案二配置完成.我们发现基本上实现我们的预期.应用A只是使用自己指定的核心.

但是此处又暴力出了另外一个问题.在个别情况下剩余的核心会被D服务消耗完,依然不能给到B.

方案二补充方案:设置sql server的CPU核心使用数量

设置sql server就简单很多了

右击sql server连接服务=>Properties=>Processors

去除 Automatically set processor affinity mask for all processors的勾选

然后点击下方的all,选择指定的核心就行,我们选择前两个,如下图所示

至此我们整个过程配置完成,经测试计算资源抢占导致的B服务失去响应问题完美解决

CUP计算资源争抢通过IIS启用处理器关联解决的更多相关文章

  1. kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析

    作者:詹雪娇,腾讯云容器产品经理,目前主要负责腾讯云集群运维中心的产品工作. 张鹏,腾讯云容器产品工程师,拥有多年云原生项目开发落地经验.目前主要负责腾讯云TKE集群和运维中心开发工作. 引言 降本增 ...

  2. k8s中计算资源策略 Limit Range

    文章转载自:https://www.kuboard.cn/learning/k8s-advanced/policy/lr.html 默认情况下,容器在 Kubernetes 集群上运行时,不受 计算资 ...

  3. Compute Resource Consolidation Pattern 计算资源整合模式

    Consolidate multiple tasks or operations into a single computational unit. This pattern can increase ...

  4. 让你的网站秒开 为IIS启用“内容过期”

    让你的网站秒开,为IIS启用“内容过期” 什么是内容过期? 当用户第一次访问你的网站,浏览器从你的网站主机下载内容,如果用户第二次访问你的网站,浏览器从缓存读取内容.你知道浏览器从缓存读取网页有多快吗 ...

  5. 架设证书服务器 及 让IIS启用HTTPS服务(转)

    无废话图文教程,教你一步一步搭建CA服务器,以及让IIS启用HTTPS服务. 一.架设证书服务器(CA服务) 1.在系统控制面板中,找到“添加/删除程序”,点击左侧的“添加/删除windows组件”, ...

  6. 云计算被视为继大型计算机、个人计算机、互联网之后的第4次IT产业革命,顺应了当前各行业整合计算资源和服务能力的要求(转)

    云计算被视为继大型计算机.个人计算机.互联网之后的第4次IT产业革命,顺应了当前各行业整合计算资源和服务能力的要求,成为引领当今世界信息技术变革的主力军.越来越多的金融企业认识到只有与云计算结合,才能 ...

  7. IIS启用GZip压缩

    IIS启用GZip压缩,是提高网站速度和减轻服务器负载的一个优化手段和方法,经测试,网站启用GZip压缩后,速度快了3倍!而配置起来也相当的简单,因此被广大网站管理员使用.本文将详细介绍如何在IIS启 ...

  8. kubernetes之管理容器的计算资源

    资源类型 CPU 和 memory 都是 资源类型.资源类型具有基本单位.CPU 的单位是 core,memory 的单位是 byte.这些都统称为计算资源. CPU含义: CPU 资源的限制和请求以 ...

  9. IIS启用GZip压缩的详细教程(图文)

    本文将详细介绍如何在IIS启用GZip压缩,同时解决可能遇到的一些问题 IIS启用GZip压缩,是提高网站速度和减轻服务器负载的一个优化手段和方法,经测试,网站启用GZip压缩后,速度快了3倍!而配置 ...

随机推荐

  1. GIAC2019 演讲精选 | 面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码

    一直以来, 如何从‘视觉稿’精确的还原出 对应的UI侧代码 一直是端侧开发同学工作里消耗比较大的部分,一方面这部分的工作 比较确定缺少技术深度,另一方面视觉设计师也需要投入大量的走查时间,有大量无谓的 ...

  2. shell学习(20)- xargs

    xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具. xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据. xargs 也可以将单行或多 ...

  3. PostgreSQL重新读取pg_hba.conf文件

    PostgreSQL  配置文件之pg_hba.conf 该文件用于控制访问安全性,管理客户端对于PostgreSQL服务器的访问权限,内容包括:允许哪些用户连接到哪个数据库,允许哪些IP或者哪个网段 ...

  4. Spring security获取当前用户

    1.如果在jsp页面中获取可以使用spring security的标签 页面引入标签 <%@ taglib prefix="sec" uri="http://www ...

  5. Java练习 SDUT-1217_蟠桃记

    蟠桃记 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第 ...

  6. 阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型

    4月23日,2019中国联通合作伙伴大会在上海正式开幕,本次大会以“合作不设限,共筑新生态”为主题,涉及5G.边缘计算.云计算.物联网.新媒体.人工智能.互联网化等各领域超过600家合作伙伴与3万名各 ...

  7. offsetheight 和clientheight、scrollheight、scrollTop区别

    clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小) scrollHeight: 滚动大小,指的是包含滚动内容的元素大小(元素内容的总高 ...

  8. IP应用加速技术详解:如何提升动静混合站点的访问速率?

    全站加速(DCDN)-IPA是阿里云自主研发四层加速产品,它基于TCP/UDP的私有协议提供加速服务,包括解决跨运营商网络不稳定.单线源站.突发流量.网络拥塞等诸多因素导致的延迟高.服务不稳定的问题, ...

  9. oracle计算记录条数

    和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO)

  10. angularJS 初始化

    AngularJS 启动有两种方式 1.绑定初始化,自动加载 通过绑定来进行angular的初始化,会把js代码侵入到html中. ng-app是angular的一个指令,代表一个angular应用( ...