【问题标题】:IIS randomly Restarts Dotnet core appsIIS 随机重启 Dotnet 核心应用
【发布时间】:2017-10-22 10:56:38
【问题描述】:

所以在生产中,我在 IIS 8(Windows server 2012 R2)中托管的所有 dotnet 核心应用程序都会在一天中的随机时间重新启动。大约一天一次。永远不要同时 - 随机时间。我有很多用户在生产中遇到了这个问题,以及预定的服务失败等等......最后,这个重启导致了停机时间(我的主要服务需要大约 5 分钟才能启动,因为它受到了请求等的影响)每天,这显然是不可接受的。

在事件查看器中,重新启动之前没有任何内容 - 每个服务只有一条:

信息 - 时间戳 - IIS AspNetCore 模块 - 1001 - 无

详细说明:进程“9652”已成功启动并正在侦听端口“25405”。

对于我拥有的每个 dotnet 核心应用程序(dotnet 1.0.0 - netcoreapp1.0)。有时应用程序在第一次尝试后失败,可能是因为它获得了太多的点击,或者其他什么,这只会延长停机时间。

没有 IIS 或 dotnet 故障转储(我通过 WER 启用了故障转储)。应用程序日志中没有任何帮助,IIS 日志中也没有任何帮助...我也打开了 STDOUT 日志 - 在重新启动时没有任何帮助。

服务器上的 dotnet core 版本:.NET Core 1.0.1 - SDK 1.0.0 Preview 2-003133 (x64) - 我认为 dotnet 不是罪魁祸首,因为它是 IIS 重新启动...

如何找出我的应用程序崩溃的原因?

【问题讨论】:

    标签: iis asp.net-core asp.net-core-mvc .net-core


    【解决方案1】:

    根据亨利的回答 - 回收的环境让我做噩梦。在 IIS 8 上,有一个 AppPools 的高级设置,用于按固定时间间隔(分钟)进行回收,默认设置为 1740(29 小时)。所以我把它改成了0(从不回收)。

    问题是当 IIS 回收应用程序池时,它实际上会重新启动您的 dotnet 核心应用程序。这在某些情况下并不理想(例如,当您有许多用户向您的重新启动应用程序发送请求时)。

    将监控应用程序的性能,并在必要时使用“特定时间”选项在工作时间之外重新启动所有 .net 核心应用程序。

    【讨论】:

      【解决方案2】:

      一种选择可能是在进程上使用ProcDump 以在进程退出时触发内存转储(-t 开关):

      procdump.exe -t pid c:\exit.dmp

      要获取进程的pid(因为可能有多个app pool),可以使用

      c:\windows\system32\inetsrv\appcmd.exe list wp

      从提升的命令提示符显示如下列表:

      WP“5624”(应用程序池:foo)

      另一个需要检查的区域是IIS automatic App Pool recycle settings,但如果您在启动后立即看到崩溃,则可能不是原因。

      【讨论】:

      • 就我而言,它是回收利用!谢谢亨利!我有 IIS 8,所以链接没有太大帮助,但它引导我朝着正确的方向前进。将发布一个指定确切设置的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2019-08-27
      • 2019-08-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      相关资源
      最近更新 更多