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&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
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&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