如何预防服务器CPU占用率过高问题

如何预防服务器CPU占用率过高问题,第1张

 我们在使用服务器的过程中有时候会遇到CPU占用率过高的情况,这样会严重影响到服务器的正常运行,会严重影响到站长的业务。下面给大家介绍简单介绍几个预防服务器CPU占用率过高的方法。

1、安装合适的杀毒软件

服务器上要安装合适服务器使用的杀毒软件,因为一些软件并不适合服务器使用,如360等,这些杀毒软件会有一些随时监控功能,会随时执行扫描任务,这样会额外增加系统的负担,容易导致CPU占用率过高的情况出现,严重的甚至会导致系统崩溃,所以有朋友安装360后会发现服务器会明显变卡,服务器上建议安装安全狗杀毒软件。

2、设置应用程序池的回收时间

应用程序池的默认回收时间是29个小时,这个一般不是很好设置,有时候会出现内存无法释放的情况,导致CPU内存占用过高,所以建议设置一下应用程序池的回收时间,把回收时间缩小,这样可以及时释放内存。

3、提高vps安全性

当服务器受到病毒或木马攻击的时候,CPU也会出现占用率过高的情况,要预防出现服务器CPU占用率过高的情况,用户朋友要做好服务器的安全工作,提高安全性,避免经常出现受黑客攻击的情况。

4、尽量不要安装和运行多余的软件

服务器上安装过多多余的程序和软件时也容易造成CPU内存占用率高的情况。很多朋友喜欢在vps上安装一些如QQ等软件,少部分朋友有在vps上看视频、玩游戏的习惯,这不经意间就容易出现CPU占用率过高的问题。

5、关闭不常用端口和多余启动项

这里建议用户关闭不常用的端口,就拿445端口来说,开启这个端口不但会使危险性增高,还容易出现CPU内存占用率高的情况。因为服务器收到445端口上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高。另外,系统在安装完成后会默认开启不少启动项,这些启动项会消耗不少系统资源和内存。

首先看你的服务开启没有

ASP.NET State Service

IIS Admin Service

设置成自动启动

然后设置Internet信息服务(IIS)管理器下的

网站默认网站右键属性调调

或者看看下面的也行:

1:没有打SP1补丁的时候会出现这个IIS6.0假死问题,但现在微软都在自动更新里面出补丁了,一般你打好最新补丁后是不会出现此问题了。(所以现在的IIS假死与这个关系不是很大)

2:从IIS6.0开始CPU资源都在应用池里面限制了,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。你鼠标右键启动网站又会自动恢复。 这个原因:大概是以下几个因数造成的。

(1):你限制了应用池的资源,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作。

出现上面这个情况解决方法:1:不限制CPU资源,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,服务器都会被拉死,你可能都无法操作服务器。)2:在超过资源那里选择关闭,这个关闭默认是失败5次,90秒内恢复,一般默认就可。网站能自动恢复,这个关闭:不是永久关闭,意思是超过资源关闭,然后在某时间内自动恢复池。不操作就是不恢复,这个是很多人的误区。

(2):内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,如果你设置了这个。那么网站访问量大了 也会出现假死,所以不建议设置这里。默认就可。

3:就是服务器自身内存太小,网站运行当然需要使用到内存了,当内存不够的时候应用池也会死掉变成禁用。那么只有等内存全部释放出来才能恢复应用池了。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个可是吃内存得大户啊,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。

4:就是ACCESS数据库太大或查询太多,这个也会出现把IIS拉死,解决方法;修复ACCESS数据库,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯、动易等cms;pjblog、zblog等博客程序,都支持生成静态功能.

5:不同网站用不同应用池:根据你自己实际情况而定,站点大的最好独立一个应用池,限制他的资源超过了自动回收,看上面(1)讲到的,这样就不影响其他站点。中型站点:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站。

6:设置回收时间:很多人以为设置回收池越短越好,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担,当服务器比较繁忙的时候,有可能导致其他应用池死。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,共用的不建议设置太短。

7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了,按照 6点设置吧。 不要设置什么20分、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些。

8:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”;

查看iis的应用程序池,状况提示为:未指定错误,同时应用程序池自动停止运行;

用事件查看器查看系统错误日志,发现如下提示:

-----------------------------------

应用程序-特定 权限设置未将 COM 服务器应用程序(CLSID 为

{A9E69610-B80D-11D0-B9B9-00A0C922E750}

)的 本地 激活 权限授予用户 NT AUTHORITY\NETWORK SERVICE SID (S-1-5-20)。可以使用组件服务管理工具修改此安全权限。

解决方法,给NETWORK SERVICE 加上访问iis服务的权限,具体方法如下:

点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,

选择其下的“IIS ADMIN SERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自定义”,添加帐号“NETWORK SERVICE ”,给该帐号赋予“本地启动”和“本地激活”的权限,重新启动IIS之后再访问同一站点,则一切正常。

9:重启IIS中的特定应用程序池命令和自动重启的方法

在操作系统是Windows server 2003 SP1+的情况下,可以用以下命令部分重启IIS应用程序池:

cscript.exe c:\windows\system32\iisapp.vbs /a "DefaultAppPool"

其中/a 代表alternatively,"DefaultAppPool"代表应用程序池的实例名。如果要设置自动重启这个应用程序池,可以尝试放在批处理中,用计划任务调用此批处理即可。很多人觉得计划任务不安全,都要禁掉,事实上,计划任务的不安全是建立在其它方面不安全的前提上的,如果由于其它方面的不安全,被放入执行程序,计划任务执行,这和计划任务没有直接关系。当然,关掉,是会减少一些安全隐患,这是不错。

-------------------

w3wp.exe就是你的ASP.NET应用宿主,如果你使用了大量的Session、Cache等资源,并且Session超市时间很长,那么内存占用量就比较大。应用池是为增加性能而设的一个特性,但是也消耗很大的内存。另外关掉Windows Server 2003里的大多数Service(那个不用都可以关掉),也可以节省一部分内存

1.怀疑在程序中应用的CACHE,

2.CACHE中有大量的数据

3.频繁刷新CACHE

4.没有设计好CACHE的方式

你的问题我以前也遇见过,我以前是用的Session,后我全部改成cook之后就好多了,应该是你的Session或是你的CACHE有问题(CACHE不太懂,但多多少应该是有的)

跟踪下SQL的调用记录,在每次往CACHE或SESSION写入大量数据时记录一下时间,看是否太过频繁

1.在win2003里asp.net的进程就是w3wp.exe

3.优化asp.net程序,就向楼上的说的那样,少用或不用session cache application之类的东西,再有就是是不是有翻页的地方,翻页处理不好也是会占很多内存的。

4.限制sql的内存。企业管理器——SQL的属性(一般是local)——“内存”标签

在这里看内存的设置,把最大值改成100M吧。

第四条是最快的方法,可以试一试。

我的一个自开发OA系统也存在这样的问题。

总结上面,大概原因是因为 session 和 cache 的不合理使用造成的。

我的应用程序中,确实用了很多的Session 和 Cache,

在 MSDN 中找到 了 “动态内存分配”这一篇,今天就试看矗?欠裼行А?br />希望有经验的朋友多给些信息,大家也好总结下出现类似错误的原因,谢谢!!

不知道你是什么网站。按理说是不会占用这么大的。如上你用了cache存放了超额的内容。当然。象session这种是不太可能占用这么大的了,或用了application 类似的一些有超长时间或永久保持性的对象来保存大量数据。如利用单例保存数据这些都有可能造成使用大量的内存。

建义2003系统安装至少1G内存。

w3wp.exe是2003下的一个iis进程,至于楼主说的sql占用内存,那有可能是因为你的sql没有设置占用内存上限

在IIS6下,经常出现w3wp.exe的内存及CPU占用不能及时释放,从而导致服务器响应速度很慢。

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

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

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

解决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方面的限制,或检查程序有无死循环之类的问题。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/104322.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-10
下一篇2023-03-10

发表评论

登录后才能评论

评论列表(0条)

    保存