欢迎来到361模板(www.ke361.com),原创精品织梦模板提供商。QQ快速注册登录 网站托管 VIP 网站定制

361模板网

当前位置:361模板网 > 技术文档 > 服务器技术 > win2008 iis7.5服务器w3wp.exe内存占用率居高不下的方案
这篇文章主要为大家详细介绍了win2008 iis7.5服务器w3wp.exe内存占用率居高不下的方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。

  最近几天织梦361官网的的服务器总是出现w3wp.exe内存占用率居高不下的问题,很是烦恼,因为服务器一直是开启的memcache,对服务器的内存要求占用比较多(WIN2008 PHP5.6环境安装memcache扩展 开启方法),经过一段时间的摸索,小编给大家分享w3wp.exe内存占用率过高的处理方法。

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

win2008 iis7.5服务器w3wp.exe内存占用率居高不下的方案

IIS的程序池默认回收间隔是1740分钟(29小时),在自动回收过程中,应用程序池将会清空,保留在内存中的数据将会被清理(相当于IIS重启)。对于互联网应用程序,为了减少数据库服务器的负担,也许会选择将大量数据暂存在内存中,回收会造成内存数据丢失,如果没有及时保存到数据库中,可能导致应用程序出问题。如果遇到系统使用高峰期,回收将可能导致一段时间应用程序无响应(出现假死状态),给予用户一种很不好的体验。

在优化应用程序池之前,我们应用先了解下程序池的几个配置信息:

发生配置更改时禁止回收:如果为True,应用程序池在发生配置更改时将不会回收。 

固定时间间隔(分钟):超过设置的时间后,应用程序池回收,为0意味着应用程序池不会按固定间隔回收。系统默认设置的时间是1740分钟(29小时)。

禁用重叠回收:如果为true,将发生应用程序池回收,以便在创建另一个工作进程之前退出现有工作进程。 

请求限制:应用程序池在回收之前可以处理的最大请求数。如果值为0,则表示应用程序池可以处理的请求数没有限制。 

生成回收事件日志条目:每发生一次指定的回收事件时便产生一个事件日志条目,里面的明细设置不一一介绍。

问题分析:每1740分钟(29小时)回收一次是否合理?

不太合理,这个周期内,有可能应用程序处于访问高峰期。因为每天的回收时间都是不一样的,很有可能在高峰期回收,就会造成短时间内网站访问出现问题。因此,要避免最大程度的减少对用户的影响,我们需要充分的分析应用程序的访问情况,例如哪个时间段是高峰,

哪个时间段访问人数最少。了解到这些后,应用程序部署人员就应该设定固定的回收时间,例如一个网站凌晨两点访问人数是最少的,那么它可以设置“特定回收时间”在凌晨两点,应用程序池里面的特定时间是支持设定多个的,请注意。 

降低 w3wp.exe 内存占用率的解决方案

打开IIS服务管理器 -> 应用程序池 -> 选择网站对应的应用程序池 -> 点击“正在回收” 

降低 w3wp.exe 内存占用率的解决方案

在弹出的窗口设置特定回收时间(在此之前右键网站应用程序池,选择高级设置,将其固定时间间隔(分钟)设置为0),并设置基于内存的最大值,如下图所示:

win2008 iis7.5服务器w3wp.exe内存占用率居高不下的方案

补充赠送:解决CPU占用过多

1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
2、在任务管理器中增加显示PID字段。就可以看到占用内存或者CPU最高的进程PID
3、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到PID对应的应用程序池。(iisapp实际上是存放在C:\windows\system32目录下的一个VBS脚本,全名为iisapp.vbs,如果你和我一样,也禁止了Vbs默认关联程序,那么就需要手动到该目录,先择打开方式,然后选“Microsoft (r) Windows Based Script Host”来执行,就可以得到PID与应用程序池的对应关系。)
4、到IIS中察看该应用程序池对应的网站,就ok了,做出上面的内存或CPU方面的限制,或检查程序有无死循环之类的问题。5、找出最消耗CPU的SQL语句进行优化

-- 找出前50最耗CPU的SQL语法
SELECT TOP 50
qs.total_worker_time/qs.execution_count as [Avg CPU Time],
SUBSTRING(qt.text,qs.statement_start_offset/2, 
(case when qs.statement_end_offset = -1 
then len(convert(nvarchar(max), qt.text)) * 2 
else qs.statement_end_offset end -qs.statement_start_offset)/2) 
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid 
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY [Avg CPU Time] DESC


以上就是win2008 iis7.5服务器w3wp.exe内存占用率居高不下的方案的全部内容,希望对大家的学习和解决疑问有所帮助,也希望大家多多支持361模板网。

感谢打赏,我们会为大家提供更多优质资源!

热词标签: IIS7.5 win2008 w3wp 内存过高

上一篇WIN2008 PHP5.6环境安装memcache扩展

下一篇宝塔面板快速开启ssl(https)的方法

取消

感谢您的支持,我们会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by361模板网,分享从这里开始,精彩与您同在