【问题标题】:Azure website: The specified CGI application encountered an error and the server terminated the processAzure 网站:指定的 CGI 应用程序遇到错误,服务器终止了进程
【发布时间】:2016-02-01 12:40:16
【问题描述】:

我在 Microsoft Azure 上发布了一个网站,最近收到以下错误:“指定的 CGI 应用程序遇到错误,服务器终止了进程。”

我的应用程序是 Java 应用程序并使用“最新的 Tomcat 7.0”。我尝试了一些修复,但没有奏效(The specified CGI application encountered an error and the server terminated the process)。我的 web.config 甚至没有这个属性。

从我的日志中,我注意到 Java 应用程序没有记录任何错误,但它只是在一段时间后停止了。当我重新启动服务器时它可以正常工作,但在一两天后,我开始收到此错误。

我之前也遇到过这个问题,但是一两个月后才出现这个错误,现在几乎每天都出现。而且我没有对我的文件或服务器进行任何更改。

知道如何解决吗?

【问题讨论】:

    标签: java tomcat azure cgi


    【解决方案1】:

    Azure 网站具有称为自动修复的功能。这仅在标准模式下可用,在免费或基本模式下不可用。

    您可以将服务器配置为定期重新启动。这不会解决根本原因,但它可能足以让您的应用程序运行。 查看这个 github gist,了解如何在 web.config 文件中配置它

    https://gist.github.com/SyntaxC4/0d7185b30acf477c2033#file-web-autoheal-config

    自动修复在 azure 网站备忘单中进行了描述

    http://microsoftazurewebsitescheatsheet.info/

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <monitoring>
          <triggers>
            <!-- Scenario #1: Recycling based on Request Count -->
            <requests count="1000" timeInterval="00:10:00"/>
            <!-- Scenario #2: Recycling based on slow requests -->
            <slowRequests timeTaken="00:00:45" count="20" timeInterval="00:02:00" />
            <!-- Scenario #3: Logging an event (or recycling) based on HTTP status code(s) -->
            <statusCode>
              <add statusCode="500" subStatusCode="100" win32StatusCode="0" count="10" timeInterval="00:00:30"/>
            </statusCode>
            <!-- Scenario #4: Taking custom actions (or recycling/logging) based on memory limit -->
            <memory privateBytesInKB="800000"/>
          </triggers>
          <!-- Scenario #1 & #2 Action -->
          <actions value="Recycle"/>
          <!-- Scenario #3 Action -->
          <actions value="LogEvent"/>
          <!-- Scenario #4 Action  -->
          <actions value="CustomAction">
            <customAction exe="d:\home\procdump.exe" parameters="-accepteula w3wp d:\home\w3wp_PID_%1%_" />
          </actions>
        </monitoring>
      </system.webServer>
    </configuration>
    

    【讨论】:

    • 嗨,我不确定前 2 条规则是如何只触发第一个动作的?是否可以只为一个触发器执行所有操作?我读到可以在操作中发送电子邮件,但我没有找到方法,你知道怎么做吗?
    【解决方案2】:

    根据我的经验,我认为您可以尝试检查Kudu控制台https://&lt;your webapp name&gt;.scm.azurewebsites.net/DebugConsole的路径D:\home\LogFiles\中的catalina.YYYY-MM-DD.logsite.YYYY-MM-DD.log之类的日志以确定原因是什么,例如Out of Memory或其他人。

    您能否提供日志文件中的错误信息以分析问题?

    我还在下面搜索了一些可能导致错误的情况。

    1. 内存使用量超过 Azure WebApp 层的限制,例如免费层 1GB RAM。然后,您可以尝试升级更高的等级,例如基本或标准等级。

    2. 对于Out of Memory的异常,你可以尝试在web.config中的JAVA_OPTS中为XmsXmx设置合适的值(httpPlatform部分) -- httpPlatform配置请参考http://azure.microsoft.com/en-us/documentation/articles/web-sites-java-custom-upload/。同时,请调试您的代码异常是否是由不合适的代码逻辑引起的。

    希望对您有所帮助。最好的问候。

    【讨论】:

    • 好像不是这个问题。我以前看过这个文件,但我没有发现任何错误或任何似乎导致这个问题的东西。而且我不再使用免费套餐了。我会继续寻找可能的错误。谢谢
    【解决方案3】:

    Web App 和 Tomcat 也存在类似问题。 有时 Tomcat 需要大约 20-30 分钟才能唤醒(在应用程序启动、重新启动或重新部署之后)。

    阅读此帖后,我们查看了我们的配置,发现应用程序设置中的“Always On”属性处于“Off”状态,这意味着 Azure 可能如果应用程序空闲,则卸载它。

    坦率地说,我还没有准备好说将此属性设置为“开”是否会解决我们的问题。我们刚刚更改了此设置,我需要几天(一周?)来判断问题是否消失。

    我可以建议:

    1. 检查您的应用是否会在一段时间后唤醒(正如我所说,在我们的例子中,超过 20 分钟)。
    2. 如果您对上一个问题的回答是肯定的,请尝试使用 Always On 属性。

    希望能给你一些线索

    2017 年 10 月 16 日更新 “永远在线”属性在几个月内对我们来说效果很好。 我重新阅读了最初的问题,看起来那个作者也有同样的问题。

    【讨论】:

    • 对不起,我不能同意这不是一个答案或者是一个不同的问题。作者可能是Web应用程序有问题,可以在空闲的情况下被Azure卸载。另一方面,在配置之后,Tomcat 可能需要很长时间才能唤醒。因此,如果他的应用程序有一段时间没有使用,Azure 会卸载它,并且在最近的 10-20-30 分钟内的任何请求都将得到第 500 个响应。如果答案不清楚,也许我需要重写答案
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 2018-12-24
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    相关资源
    最近更新 更多