当前位置: 首页 > news >正文

IIS解决CPU和内存占用率过高的问题

发现进程中的w3wp占用率过高。

  经过查询,发现如下:

  w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资源。这个进程对于系统的稳定和安全具有重要的意义,不能轻易的结束掉这个进程。

  找到解决办法:(Windows2008中可以通过:服务器管理器->角色\web服务器\iis管理器 找到网站下的应用程序池,直接在程序池项的右键中修改)

  解决CPU占用过多:

  1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。

  2、设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭。

  根据w3wp取得是哪一个应用程序池:

  1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid

  2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)

  3、到iis中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。

  解决内存占用过多,可以做以下配置:

  1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。

  2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。再设置当内存占用超过多少(如500M),就自动回收内存。

  我的设置如下:

  首先是对CPU的限制:在启用cpu监视后,我设置该应用程序池最大的cpu使用率为50%。设置刷新cpu时间为1分钟,设置操作为“关闭”。最大工作进程数设置为1。这个意思是,IIS刷新检测该独立池的CPU使用情况时间为1分钟,如果超过设置的cpu限制50%,就会发出关闭池的指令,要求池在指定的时间内关闭。如果池成功在这个时间内关闭,IIS会重启动一个新池,此段时间很短,一般不会有什么感觉,池就重新开启了,对于访问网站的人基本是不会有感觉的。但如果池没有在指定时间内关闭,IIS就会强行关闭它一个刷新CPU时间。在这个停止的时间内,网站无法访问,提示“Service Unavaliable”。 关闭时间和启动时间间隔设置:设短一些比如10秒,这样当您的网站程序大量占用系统资源时IIS自动快速回收进程并且快速启动进程,您的网站暂时还可以将就着工作。

  对内存的限制及进程回收时间的设置:我设置为内存占用超过800M就自动回收内存,虚拟内存没有做限制。进程回收时间我保持默认没有修改。各位可以根据自己的情况设置更短的时间。对应用程序池最大虚拟内存也可以在此进行设置,超过了设置的最大虚拟内存,该池会就被回收。

  最后综合落伍wlmmc的一些经验,总结一些需要注意的问题:

  1、要限制一个站点的CPU使用,必须将该站点设置为独立应用程序池,共用应用程序池是无法限制单个站点的。IIS独立应用程序池,就需要独立的进程,非常消耗内存。独立池越多,就有越多的W3WP进程。对于每个站点均要独立应用程序池的服务器,在一般的普通P43.0 2G内存 的普通服务器上,建议不要超过50个站点,最好30以内,不然服务器压力非常大。在配置上,我一般把资源消耗较大的网站独立一个池,一般普通BBS或者生成HTML的系统大概5个站一个池。普通网站以及一些企业站点均共用一个池。

  2、根据wlmmc的经验,在服务器硬件允许的情况下,一般不要限制站点内存使用,这样能够保证网站运行,不会出现用户掉线情况。需要限制某站的最大虚拟内存不要小于64M,不然可能出现一些未知的错误。

  3、这些都不是根本解决办法,它的根本问题是网站程序有问题,要解决根本问题还要从程序查起。根据本文开头提到的方法查到具体的应用程序池,找到使用此应用程序池的网站,解决网站程序存在的问题,如死循环之类。

  4、除了w3wp.exe, 在调用数据库进行大量查询操作的时候,也会大量占用CPU资源,这是难免的(数据库方面的语句及结构优化不在本文讨论范围之内)。个人认为,只要不是CPU长时间占用100%, 一般在75%左右都是正常的。

 
**********转载:https://www.cnblogs.com/springwind268/p/4718316.html

转载于:https://www.cnblogs.com/linybo/p/10126347.html

相关文章:

  • nmap扫描工具,tcpdump抓包工具的安装和使用
  • 乐理
  • 204 .权限管理系统demo
  • Vue结合webpack实现路由懒加载和分类打包
  • 企业金融云存储建设之路
  • kvm热添加磁盘,且停机重启kvm虚拟机,文件信息不丢失
  • 大数据的yarn类型系统分析与云储存
  • java 并发(五)---AbstractQueuedSynchronizer(4)
  • 2018 年最受欢迎的 Python 库,你都用过吗?
  • 七、并发容器ConcurrentHashMap
  • TensorFlow安装
  • geowebcache1.14.1配置arcgislayer启动报错的解决
  • Python数据预处理:机器学习、人工智能通用技术(1)
  • 三大NoSQL数据库HBase、Cassandra和MongoDB大比拼
  • 面试最常问的tcp三次握手策略
  • [译]Python中的类属性与实例属性的区别
  • [译]如何构建服务器端web组件,为何要构建?
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 08.Android之View事件问题
  • Computed property XXX was assigned to but it has no setter
  • JavaScript新鲜事·第5期
  • js操作时间(持续更新)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue 重置组件到初始状态
  • 工作手记之html2canvas使用概述
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 码农张的Bug人生 - 初来乍到
  • 前端代码风格自动化系列(二)之Commitlint
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 思否第一天
  • 思维导图—你不知道的JavaScript中卷
  • 网页视频流m3u8/ts视频下载
  • 用Python写一份独特的元宵节祝福
  • 运行时添加log4j2的appender
  • 在electron中实现跨域请求,无需更改服务器端设置
  • (02)Hive SQL编译成MapReduce任务的过程
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (全注解开发)学习Spring-MVC的第三天
  • (三)uboot源码分析
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)socket Aio demo
  • (转)编辑寄语:因为爱心,所以美丽
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET 反射的使用
  • .net6 webapi log4net完整配置使用流程
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET与 java通用的3DES加密解密方法
  • @media screen 针对不同移动设备
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?