服务器内存占用居高不下,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占用不能及时释放,从而导致服务器响应速度很慢。

49eac077a79243a7710804f200bc1300.png

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

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

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

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

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

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

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

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

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

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

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

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

af72c9699bc004ca2e03a2ec1138d745.png

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

6070aeed29112876242484b65b3919e4.png

补充赠送:解决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模板网。

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

### 诊断和降低Linux系统的内存使用率 #### 使用工具监控内存状态 为了有效管理和优化Linux服务器上的内存资源,了解当前的内存分配至关重要。`top`命令提供了实时视图来查看CPU和内存的状态[^3]。第四行展示了详细的内存信息,包括总内存、可用内存、已使用的内存量以及用于缓冲区和缓存的部分。 对于更深入的理解系统内部工作原理及其对性能的影响而言,理解操作系统如何处理buffers/cached非常重要。实际上,在Linux环境下,当提到“剩余”的RAM几乎为零时,并不一定意味着存在问题;相反,这表明OS正在效利用所有可获得的RAM作为磁盘I/O操作的速缓存,从而提整体性能表现[^1]。 然而,如果确实遇到异常内存消耗,则可能是由于某些特定的应用程序行为引起的。例如,一些编程环境像Java会自己负责垃圾收集机制并维持较大的堆尺寸,即使实际需求并不大也会保持较的预留量不变[^4]。 #### 排查具体原因 面对不明原因造成的持续增长型内存泄漏现象,应该考虑是否存在未正确关闭连接或者对象未能适时销毁等问题存在于应用层面上。通过分析日志文件或是借助于专业的调试器可以帮助定位潜在缺陷所在的位置。另外值得注意的是,有时尽管看起来总的物理RAM接近饱和,但如果尚未启用swap交换功能的话,那么通常情况下还不至于影响到正常的服务运行质量。 #### 实施缓解措施 一旦确认了造成过多占用的具体源头之后就可以采取相应的行动方案: - **调整配置参数**:如果是数据库之类的后台服务导致的压力过大,可以通过修改其最大允许连接数或者其他相关选项来进行适当调节; - **重启进程/容器**:简单粗暴却往往立竿见影的方法之一便是终止那些长期累积下来的脏页刷新任务或者是其他形式的老化实例; - **升级硬件设施**:当然最直接有效的途径莫过于增加额外的RAM模块以满足日益增长的数据处理请求。 ```bash # 查看当前活跃进程中哪些占用了较多资源 ps aux | sort -rk 4,4 | head -n 5 # 或者使用htop交互式的界面进行观察 (需预先安装) sudo apt-get install htop && htop ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值