昨晚十点钟的样子,网站崩溃,开始 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,原因排查与记录。的更多相关文章

  1. ActiveMQ部署步骤和后台管理网站Service Unavailable问题解决笔记

    最近部署ActiveMQ的时候,发现有的服务器可以打开后台管理网址,有的服务器无法打开,Jetty报503 Service Unavailable. 搞了很久终于发现了问题,现将部署和解决过程做笔记如 ...

  2. ASP.NET网站报Service Unavailable错误的解决办法

    现象:网站打不开,提示 service unavailable 原因:IIS资源不足,程序占用资源太多,应用程序池会被自动禁用 解决办法:重启IIS,在命令行中输入iisreset即可

  3. day32 信号量 事件 管道 进程池

    今日主要内容: 1.管道(Pipe) 数据接收一次就没有了 2.事件(Event) 3.基于事件的进程通信 4.信号量(Semaphore) 5. 进程池(重点) 6.进程池的同步方法和异步方法 7. ...

  4. .net网站iis应用池完美解决方案

    一.防DDOS攻击11条: 1.确保所有服务器采用最新系统,并打上安全补丁.计算机紧急响应协调中心发现,几乎每个受到DDoS攻击的系统都没有及时打上补丁. 2.确保管理员对所有主机进行检查,而不仅针对 ...

  5. IIS 为应用程序池提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误的解决方法

    系统环境:Windows Server 2008 R2 64位, IIS 7.0 错误信息: 为应用程序池提供服务的进程在与 Windows Process Activation Service 通信 ...

  6. IIS进程回收导致定时器失效的一种解决办法

    公司开发的网站使用的.net,网站中用到了定时器,放在Global.asax.cs文件中,但由于IIS设置了网站进程定期回收,回收后定时器也就没了.如果不让进程回收,又担心程序中有内存泄露.有人说可以 ...

  7. System.Threading.Tasks.Task 引起的 IIS 应用池崩溃

    接口服务运行一段时间后,IIS应用池就会突然挂掉,事件查看日志,会有事件日志Event ID为5011的错误 为应用程序池“PokeIn”提供服务的进程在与 Windows Process Activ ...

  8. pageadmin 网站建设系统如何新建进程池并在站点中使用

    1.打开iis管理界面,右键应用程序池,点击添加应用程序池,添加界面如下图,注意pageadmin cms net版本选择4.0,托管模式建议选择集成模式. 2.添加完毕后,在网站中点击对应站点,点击 ...

  9. ArcGIS for Android 10.1.1API 中文标注导致程序异常崩溃问题

    1.前言 问题:在部分Android机型中使用ArcGIS for Android 10.1.1 API 中文标注导致程序异常崩溃. 说明:手里有两台机器一台是Nexus4,原生系统,版本4.4.4, ...

随机推荐

  1. java TimeZone类

    TimeZone类主要是对时区的操作 下面是一个简单的例子 public static void main(String[] args) { // TODO Auto-generated method ...

  2. Linq学习<四> linq to XML

    LINQ to XML并不打算替代标准的XML API,例如,XML DOM(Document Object Model).Path.XQuery和XSLT等.如果熟悉这些API或当前需要使用或学习它 ...

  3. 使用VMware克隆Linux系统

    最近在学习使用solr云技术,因为是用来学习操作,因此需要在一台虚拟机上,安装多台LinuxOS. 但是又想偷懒,不想每安装一个LinuxOS,就重新配置Linux环境,所以使用克隆,只需安装好一个模 ...

  4. 编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名

    建议127:用形容词组给接口命名 接口规范的是“Can do”,也就是说,它规范的是类型可以具有哪些行为.所以,接口的命名应该是一个形容词,如: IDisposable表示可以被释放 IEnumera ...

  5. modelsim使用常见问题及解决办法集锦③

    四.You selected Modelsim-Altera as Simulation Software in EDA Tool Settings,however…… You selected Mo ...

  6. Hadoop的Windows伪分布式学习

    解压hadoop-2.7.2.zip,不是tar.gz,前者是Windows所用的 解压到路径,设置环境变量 HADOOP_HOME=E:\hadoop-2.7.2\ HADOOP_USER_HOME ...

  7. 第二章第一个项目——关于mime

    一句话就能解释清楚. MIME标注HTTP响应类型. 而后缀名标注文件类型. ---------分割线-------- http响应实质上只有数据,没有文件名. 举个例子吧. HTTP/1.1 200 ...

  8. VC中CRect类的简单介绍

    CRect CRect类与Windows RECT结构相似,并且还包括操作CRect对象和Windows RECT结构的成员函数.在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都 ...

  9. C++ 内敛函数

    在主调函数调用函数时,先将现场压入栈以保存现场-转去执行被掉函数-返回主调函数.现场出栈以恢复现场-继续往下执行. 为了减少函数调用的成本,特别是对于小型函数,C++提供了内敛函数(inline).C ...

  10. WinForm使用Label控件模拟分割线(竖向)

    用Label控件进行模拟 宽度设为1:this.lblPagerSpliter1.Size = new System.Drawing.Size(1, 21); 去掉边框:this.lblPagerSp ...