IIS进程池异常崩溃,导致网站 service unavailable,原因排查与记录。
昨晚十点钟的样子,网站崩溃,开始 service unavailable,最近开始业务高峰,心里一惊,麻痹肯定进程池又异常崩溃了。又碰到什么问题?上次是因为一个异步线程的问题,导致了进程池直接崩溃,后面修改掉了,这次又因为什么?
然后先新建了一个进程池,把网站先跑起来。
查看windows日志,发现如下错误:
先爆发了一个oom错误,再w3wp.exe崩溃了。
但是我确信,我的内存绝对足够,一般只占用70%最多。
所以当时我没办法找到问题,今天早上,一个同事反馈网站有一个功能异常,大致就是,从上传的excel中,读取数据,以前可以读到显示,现在不行了。
遂问另外一个负责开发的同事,可能是什么情况(因为代码没动过),同事说,是不是换过进程池?(因为以前有时候进程池出问题,第一个解决办法就是先新建进程池把网站跑起来。)
然后告诉我,是因为没开启IIS进程池高级设置那里的的一个选项(这台服务器我们都可以管理配置,他配置过这个选项,我不知道。),如图:
我听到以后,
第一个反映就是:那肯定是这个问题造成的了。
第二个反映是:卧槽,前台怎么能把这个开关打开?要知道,前台进程池的w3wp.exe经常会跑到2g以上的内存!!
先普及一下这个开关的作用,因为我的服务器是64位的,windows server 2008,然后读取excel的时候,用的是oledb,一定要安装windows office才能用,然后服务器上一直用的是windows office 2003。
so,问题来了:2003相关东西是不能以64位的方式被IIS进程加载的,所以要打开这个开关,让它能正确加载,但是这样一来,当前IIS进程将处于32位方式下运行。
so,问题又来了,32位程序,最大可用内存是2g
一切依然明了,首先是同事打开了IIS进程池高级设置的这个开关,导致了IIS进程池的进程以32位方式运行,然后高峰期业务量稍微一高,内存占用马上超过2g,
OOM 自然来了,然后一直这样W3WP.EXE自然崩溃了。
所以罪魁祸首就是打开了这个开关。。。。。
所以,暂时的解决办法,关注一下内存,跑得稍微高了点的时候,及时回收一下进程池。
第二步,想办法将那个开关变为true,并且让读excel的功能能 用。
要让开关能换为true且功能能正常的,无非就是,要么修改服务器环境,安装一个2010的office上去,或者修改读取excel的代码,不用微软提供的相关东西。
so,为了不对服务器做很大的改动,果断选择后者。
查资料,发现NPOI,很适合我的需求,用之,解决。大概用法见以下链接 http://www.cnblogs.com/Jerseyblog/p/6410559.html
以上,记录一下找到问题过程,以免以后自己忘记,也让可能有同种问题的人参考之。
===================================================================
以下代码纯粹是为了让搜索引擎收录好让友友或许能百度到这篇文章,可以不用看。是windows错误日志详情。(或许百度就收录这篇文章,你或许就刚好搜这个错误代码看到了呢?对吧。毕竟我截图,百度收录不到这个关键代号什么的)
进程主机空闲检查过程中发生错误。
Exception: System.OutOfMemoryException
Message: 引发类型为“System.OutOfMemoryException”的异常。
StackTrace: 在 System.Web.Hosting.ApplicationManager.CloneAppDomainsCollection()
在 System.Web.Hosting.ApplicationManager.IsIdle()
在 System.Web.Hosting.ProcessHost.IsIdle()
错误应用程序名称: w3wp.exe,版本: 7.5.7601.17514,时间戳: 0x4ce7a5f8
错误模块名称: KERNELBASE.dll,版本: 6.1.7601.19160,时间戳: 0x56bcd5c3
异常代码: 0xe0434352
错误偏移量: 0x0000c52f
错误进程 ID: 0x648
错误应用程序启动时间: 0x01d287a8fac9208a
错误应用程序路径: C:\Windows\SysWOW64\inetsrv\w3wp.exe
错误模块路径: C:\Windows\syswow64\KERNELBASE.dll
报告 ID: a4af05ca-f44f-11e6-9c01-e998e853dd81
IIS进程池异常崩溃,导致网站 service unavailable,原因排查与记录。的更多相关文章
- ActiveMQ部署步骤和后台管理网站Service Unavailable问题解决笔记
最近部署ActiveMQ的时候,发现有的服务器可以打开后台管理网址,有的服务器无法打开,Jetty报503 Service Unavailable. 搞了很久终于发现了问题,现将部署和解决过程做笔记如 ...
- ASP.NET网站报Service Unavailable错误的解决办法
现象:网站打不开,提示 service unavailable 原因:IIS资源不足,程序占用资源太多,应用程序池会被自动禁用 解决办法:重启IIS,在命令行中输入iisreset即可
- day32 信号量 事件 管道 进程池
今日主要内容: 1.管道(Pipe) 数据接收一次就没有了 2.事件(Event) 3.基于事件的进程通信 4.信号量(Semaphore) 5. 进程池(重点) 6.进程池的同步方法和异步方法 7. ...
- .net网站iis应用池完美解决方案
一.防DDOS攻击11条: 1.确保所有服务器采用最新系统,并打上安全补丁.计算机紧急响应协调中心发现,几乎每个受到DDoS攻击的系统都没有及时打上补丁. 2.确保管理员对所有主机进行检查,而不仅针对 ...
- IIS 为应用程序池提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误的解决方法
系统环境:Windows Server 2008 R2 64位, IIS 7.0 错误信息: 为应用程序池提供服务的进程在与 Windows Process Activation Service 通信 ...
- IIS进程回收导致定时器失效的一种解决办法
公司开发的网站使用的.net,网站中用到了定时器,放在Global.asax.cs文件中,但由于IIS设置了网站进程定期回收,回收后定时器也就没了.如果不让进程回收,又担心程序中有内存泄露.有人说可以 ...
- System.Threading.Tasks.Task 引起的 IIS 应用池崩溃
接口服务运行一段时间后,IIS应用池就会突然挂掉,事件查看日志,会有事件日志Event ID为5011的错误 为应用程序池“PokeIn”提供服务的进程在与 Windows Process Activ ...
- pageadmin 网站建设系统如何新建进程池并在站点中使用
1.打开iis管理界面,右键应用程序池,点击添加应用程序池,添加界面如下图,注意pageadmin cms net版本选择4.0,托管模式建议选择集成模式. 2.添加完毕后,在网站中点击对应站点,点击 ...
- ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题
1.前言 问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃. 说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4, ...
随机推荐
- 我的CSS3学习笔记
1.元字符使用: []: 全部可选项 ||:并列 |:多选一 ?: 0个或者一个 *:0个或者多个 {}: 范围 2.CSS3属性选择器: E[attr]:存在attr属性即可: E[attr=val ...
- C++ 的写好库编译好,DELPHI或者Java做界面,iOS 和 Android 就都搞定。
当然也可以使用BCB和相关的开发库来开发App,只是别人没法帮助你. 摘自<想到做到-Android开发关键技术与精彩案例>.(詹建飞) p40
- DELPHI XE5-8 弹出列表框供选择
点击章节练习: var tmplm:Tlistboxitem; begin dm.FDQTMP.SQL.Clear; dm.FDQTMP.SQL.Add('select GSESSON from TS ...
- [LeetCode 题解]: Insertion Sort List
Sort a linked list using insertion sort. 题目要求:链表的插入排序,由于没有时间复杂度的要求,可以直接循环操作. /** * Definition for si ...
- ansible 常用模块的使用
安装 yum -y install ansible 配置文件/etc/ansible/hosts 模块介绍与使用 ping模块 [root@node1 config]# ansible k8s -m ...
- 《OD大数据实战》环境整理
一.关机后服务重新启动 1. 启动hadoop服务 sbin/hadoop-daemon.sh start namenode sbin/hadoop-daemon.sh start datanode ...
- PHP如何将多维数组中的数据批量插入数据库?
PHP将多维数组中的数据批量插入到数据库中,顾名思义,需要用循环来插入. 1.循环insert into 语句,逐渐查询 <?php /* www.qSyz.net */ @mysql_conn ...
- 一分钟了解 TCP/IP 模型
原文讲的不是特别细,为了便于理解,我颠倒了顺序. 写在开始 我们需要知道协议到底是什么. 在网络上,一个协议对应于管理系统之间如何相互通信的规则. 然后我们需要知道什么是协议族. 一个协议族是一系列协 ...
- java里面的标识符、关键字和类型
1. 注释 Java中有三种注释: (1) // -单行注释,注释从“//”开始,终止于行尾: (2) -多行注释,注释从““结束: (3) -是Java特有的doc注释,这种注释主 ...
- 手把手教你在Mac中搭建iOS的 React Native环境
准备工作 1.你需要一台Mac电脑..(这不是废话?我所用的是Air~~穷..) 2.我所操作的电脑系统环境是 3.xcode版本:8.0正式版 必需的软件 1.Homebrew Homebrew, ...