azure App Service PHP 5.6 间歇性 - Fastcgi 服务意外退出

azure App Serice PHP 5.6 Intermittent - The Fast-CGI Service exited unexpectedly

PHP 5.6 Laravel api 申请。托管在 Azure 应用服务中。

除默认值外,未加载任何扩展。使用 wincache 和 php sql 服务器扩展也是如此。

99% 的请求都很好,但 1%(很多)以 500 错误结束。 现在这是间歇性的,应用程序没有 "obviously" 错误,您无法重新创建它,因为再次尝试时相同的请求将起作用,或者运行良好 运行 之前的 1000 倍。

现在我们在其他项目上遇到过 php 在 Azure 中的稳定性差,解决这个问题的方法是禁用 wincache 中的 OP-Code 缓存,但在当前版本中默认禁用.

实际错误未被 php 记录,并且 none 或应用程序中很少的代码执行,因为也没有任何内容进入应用程序日志,这几乎是它的第一个非框架 activity.

请求追踪失败,貌似一堆没用的信息,可能是我不知道怎么解读,重点说一下:

<failedRequest url="http://app:80/api/orders?with=orderItem&amp;search=user_id:addf7e91a98a4eb3a623e65a38a2f646"
           siteId="1758523661"
           appPoolId="app-rest"
           processId="4704"
           verb="GET"
           authenticationType="NOT_AVAILABLE"               activityId="{00000000-0000-0000-6B06-0080000000F7}"
           failureReason="STATUS_CODE"
           statusCode="200"
           triggerStatusCode="500"
           timeTaken="250"
xmlns:freb="http://schemas.microsoft.com/win/2006/06/iis/freb"
           >

           ...

<Event
    xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name="WWW Server" Guid="{3A2A4E84-4C21-4981-AE10-3FDA0D9B0F83}"/>
        <EventID>0</EventID>
        <Version>1</Version>
        <Level>3</Level>
        <Opcode>18</Opcode>
        <Keywords>0x100</Keywords>
        <TimeCreated SystemTime="2017-08-05T08:52:22.727Z"/>
        <Correlation ActivityID="{00000000-0000-0000-6B06-0080000000F7}"/>
        <Execution ProcessID="4704" ThreadID="28092"/>
        <Computer>RD0004FFD742D0</Computer>
    </System>
    <EventData>
        <Data Name="ContextId">{00000000-0000-0000-6B06-0080000000F7}</Data>
        <Data Name="ErrorDescription">D:\Program Files (x86)\PHP\v5.6\php-cgi.exe - The FastCGI process exited unexpectedly</Data>
    </EventData>
    <RenderingInfo Culture="en-US">
        <Opcode>SET_RESPONSE_ERROR_DESCRIPTION</Opcode>
        <Keywords>
            <Keyword>RequestNotifications</Keyword>
        </Keywords>
    </RenderingInfo>
    <ExtendedTracingInfo
        xmlns="http://schemas.microsoft.com/win/2004/08/events/trace">
        <EventGuid>{002E91E3-E7AE-44AB-8E07-99230FFA6ADE}</EventGuid>
    </ExtendedTracingInfo>
</Event>

感谢任何可能在我们迁移到 AWS 之前解释或建议调试方法的想法或经验。

感谢您提供的一切。

事实证明,我的修复相当简单且没有记录。

这不是我最初怀疑的 Wincache。

在应用程序设置中,添加WEBSITE_DYNAMIC_CACHE value 0

到目前为止,这对我们的设置没有任何负面影响。但请记住,我并不完全清楚这个设置应该实现什么——但被指出与文件系统缓存有关。

https://github.com/projectkudu/kudu/wiki/Configurable-settings

Turning on the 'dynamic cache' feature.

Full content caching: caches both file content and directory/file metadata (timestamps, size, directory content):

WEBSITE_DYNAMIC_CACHE=1

Directory metadata caching: will not cache content of the files, only the directory/file metadata (timestamps, size, directory content). That results in much less local disk use:

WEBSITE_DYNAMIC_CACHE=2

请注意,实际上默认情况下它是打开的,在我们的例子中我们想将其关闭 WEBSITE_DYNAMIC_CACHE=0