增加应用程序进程回收时间可以减少由于内存泄漏或其他问题导致的应用程序进程崩溃。
如何增加应用程序进程回收时间
- 打开 Internet 信息服务 (IIS) 管理器。
- 在左窗格中,展开服务器节点,然后单击“应用程序池”。
- 在右窗格中,右键单击要修改的应用程序池,然后单击“属性”。
- 在“回收”选项卡上,修改以下设置:
- 计划回收:定期回收应用程序进程。建议将此值设置为 1740 分钟(29 小时)或更高。
- 私有内存回收:当私有内存使用量达到指定阈值时,回收应用程序进程。建议将此值设置为 90% 或更高。
- 请求限制回收:当应用程序进程处理的请求数达到指定阈值时,回收应用程序进程。建议将此值设置为 10000 或更高。
- 单击“确定”保存更改。
其他注意事项
- 回收应用程序进程会中断正在运行的应用程序。确保在低流量时期进行此更改。
- 增加回收时间并不能完全消除应用程序进程崩溃。但是,它可以显着减少崩溃的频率。
- 定期检查应用程序池的事件日志,以查找可能导致崩溃的任何错误或警告。
-
如果应用程序进程频繁崩溃,请考虑使用其他缓解策略,例如:
- 优化应用程序代码以减少内存泄漏。
- 使用性能分析工具来识别和解决瓶颈。
- 升级到较新版本的应用程序或 IIS。
IIS应用程序池老是自动停止求助
一、2003应用程序池自动死了,不能恢复了,一直出现 Service Unavailable 常见方法如下。
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的应用程序池,状况提示为:未指定错误,同时应用程序池自动停止运行;
能尽快耗尽及其内存,占光及其cpu有哪些方法
1、在IIS中对每个网站进行单独的应用程序池配置。
即互相之间不影响。
(进程池越多越占用内存,由于访问网站之后往往不会立即释放内存资源。
)2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。
同时,设置同时运行的w3wp进程数目为1。
再设置当内存或者cpu占用超过多少,就自动回收内存 。
3、设置固定时间加收进程,比如在凌晨1:00至9:00之前访问人数都比较少,影响很少小,可以设定每天在这个时间段内进行内存回收,以减少服务器因 为内存不足带来的影响。
设定固定的时间在IIS6中没有限制次数,可以根据实际情况来设定时间比如:晚上12:00,8:00,12:30,6:30等时 间段时间有效的进程池资源回收。
一般来说,这样就可以解决了。
但仍然会出现个别网站因为程序问题,不能正确释放。
那么,怎么样才能找到是哪一个网站的?1、在任务管理器中增加显示pid字段。
就可以看到占用内存或者cpu最高的进程pid2、在命令提示符下运行iisapp -a。
注意,第一次运行,会提示没有js支持,点击确定。
然后再次运行就可以了。
这样就可以看到pid对应的应用程序池3、到iis中察看该应用程序池对应的网站,就ok了。
怎样解决SQL Server内存不断增加问题
为此,数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统交换内存。
SQL Server 实例在启动时通常获取8到12MB的内存以完成初始化过程。
当实例完成初始化后,就不会再获取更多的内存,直到用户连接到该实例并开始产生工作负荷。
这时,该实例根据需要不停地获取内存以支持工作负荷。
随着更多的用户连接并运行查询,SQL Server 将获取支持需求所需的额外内存。
该实例将继续获取内存直到达到自身的内存分配目标,并且直到达到该目标的下限才会释放任何内存。
为了在不产生多余换页 I/O 的情况下获取尽可能多的内存,SQL Server 的每个实例都配置一个内存获取目标,直到电脑的可用物理内存在4MB到10MB的范围内。
之所以选择该范围是因为测试表明 Windows NT 和 Windows 2000 都有最小内存交换,直到内存分配等于可用物理内存减去4MB。
工作负荷处理任务重的 SQL Server 实例保留的可用物理内存为范围的较低端 (4MB);工作负荷处理任务轻的实例保留的可用物理内存为范围的较高端 (10MB)。
SQL Server 实例的目标随工作负荷的改变而变化。
当更多的用户连接并产生更多的工作时,该实例倾向于获取更多的内存以使可用的内存保持在4MB的限制以下。
当工作负荷减轻时,该实例将其目标调整为 10MB的可用空间,并释放内存给操作系统。
将可用空间量保持在10MB和4MB之间可防止 Windows NT 或 Windows 2000 过多执行换页操作,同时使 SQL Server 得以获得尽可能最大的高速缓冲存储器而不至引起额外的交换。
实例的目标内存配置和数据库缓冲池的页相对于可用池大小的需求有关。
在任何实时点,缓冲区页的总需求取决于满足任何当前执行的查询所需的数据页数。
假如相对于高速缓冲存储器内的页数,数据页的需求很大,则当前在缓冲区内的每一页很可能在相对较短的时间内由新页替换。
这可由缓冲区管理器对象的页生命期性能计数器来度量。
对于相对较小的缓冲区有较高需求的情况将生成短生命期,而纯粹的影响就是使 I/O 增加,因为在页可由多个逻辑读取引用之前往往要被重写。
为减轻这个问题,数据库引擎能够获取更多的内存以增加高速缓冲存储器的大小。
当页生命期长时,数据库引擎将可用内存定位于目标的高端 (10 MB);而当页生命期短时,数据库引擎定位于目标范围的低端 (4MB)。
随着其他应用程式在运行 SQL Server 实例的电脑上启动,他们消耗内存致使可用物理内存量降到 SQL Server 的目标以下。
SQL Server 实例于是从其地址空间释放足够内存,以使可用内存量回到 SQL Server 的目标。
假如有其他应用程式停止运行而使可用内存增多,SQL Server 实例将增加其内存分配大小。
SQL Server 能够每秒释放并获取几MB字节的内存,这使他得以根据内存分配变化作出快速调整。
您能够通过配置允许sql server能够使用的最大内存来做限制:最小和最大服务器内存的影响min server memory 和 max server memory 配置选项建立由 SQL Server 数据库引擎使用的内存量的上限和下限。
数据库引擎并不立即获取 min server memory 中指定的内存量。
数据库引擎启动时只使用初始化所需的内存。
随着数据库引擎工作负荷的增加,他将继续获取支持工作负荷所需的内存。
数据库引擎直到到达 min server memory 中指定的内存量才会释放任何所需的内存。
一旦到达 min server memory,数据库引擎将使用标准算法(使操作系统的可用内存保持在 4MB到 10MB之间)获取和释放所需内存。
唯一的区别是数据库引擎从不将内存分配降到 min server memory 所指定的水平下,也从不获取超过max server memory 所指定水平的内存。
数据库引擎获取的内存量完全取决于放置在实例上的工作负荷。
不处理很多请求的 SQL Server 实例可能永远达不到 min server memory。
假如为 min server memory 和 max server memory 指定相同的值,则一旦分配给数据库引擎的内存达到该值,数据库引擎将停止动态释放和获取内存。
假如在运行 SQL Server 实例的电脑上频繁启动或停止其他应用程式,启动这些应用程式所需的时间可能会因 SQL Server 实例分配和释放内存而延长。
另外,假如 SQL Server 是几个在一台电脑上运行的服务器应用程式中的一个,系统管理员可能需要控制分配给 SQL Server 的内存量。