2017-08-05 4 views
1

PHP 5.6 Application Laravel api. Hébergé dans un service d'application Azure.azure App Serice PHP 5.6 Intermittent - Le service Fast-CGI s'est terminé de manière inattendue

Aucune extension chargée, autre que les valeurs par défaut. Donc, utilisez wincache et l'extension du serveur php sql.

99% des requêtes sont correctes, mais 1% (ce qui est beaucoup) se termine par une erreur 500. Maintenant, ceci est intermittent, il n'y a rien de "manifestement" faux avec l'application, vous ne pouvez pas recréer cela, car la même requête fonctionnera quand elle sera réessayée, ou fonctionnera correctement 1000 fois auparavant.

Maintenant, nous avons connu une mauvaise stabilité avec PHP dans Azure auparavant sur d'autres projets, et la solution était de désactiver le cache OP-Code dans wincache, mais sur la version actuelle, il est désactivé par défaut. L'erreur réelle, n'est pas enregistrée par php, et aucun ou très peu de code dans l'application s'exécute car rien ne le fait non plus dans le journal des applications, ce qui est à peu près sa première activité non-cadre.

traçage Échec de la demande, ressemble à beaucoup d'information inutile, mais peut-être je ne sais pas comment l'interpréter, voici les faits saillants:

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

Reconnaissants pour des idées ou des expériences qui pourraient expliquer ou suggérer des moyens pour déboguer cela avant de passer à AWS.

Nous vous remercions de tout ce que vous pouvez offrir.

+0

S'il vous plaît lire et suivre les étapes [ cette réponse] (https: // stackoverflow.com/questions/34128799/deploying-opigno-on-azure-site/34130215 # 34130215) pour activer PHP Error Logs pour votre application, et voir ce que les journaux disent. –

+0

Merci pour la réponse. Les journaux php sont activés et ne consignent rien. C'est un peu comme s'il ne fonctionnait jamais vraiment, ou qu'il sortait immédiatement. Pour être clair sur ce point, le journal est rempli, mais jamais lorsque l'une de ces 500 erreurs se produit. – Gavin

+0

Je rencontre également ce problème. À un moment donné, j'ai généré deux erreurs de type 'Erreur d'établissement d'une connexion à la base de données', donc je ne sais pas si c'est un problème de connexion à une base de données. Même après avoir activé xdebug et toutes les fonctions de création de rapports qu'il offre, je n'ai toujours pas pu obtenir plus de commentaires sur le problème, php_errors.log ne sera pas mis à jour. –

Répondre

0

Le correctif pour moi s'est avéré être plutôt simple et non documenté.

Ce n'était pas comme je l'ai suspecté à l'origine Wincache.

dans les paramètres App, ajoutez WEBSITE_DYNAMIC_CACHE value 0

Cela a donc présenté jusqu'ici aucun effet négatif à notre configuration. Mais gardez à l'esprit que je ne suis pas tout à fait clair sur ce que ce paramètre est censé accomplir - mais a été indiqué pour être lié à la mise en cache du système de fichiers.

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

Activer la fonction 'cache dynamique'.

mise en cache de contenu complète: caches à la fois le contenu des fichiers et des répertoires/fichiers métadonnées (horodatages, la taille, le contenu du répertoire):

WEBSITE_DYNAMIC_CACHE=1

mise en cache des métadonnées répertoire: ne cache le contenu des fichiers, seulement les métadonnées du répertoire/fichier (horodatages, taille , contenu du répertoire). Cela se traduit par beaucoup moins d'espace disque local:

WEBSITE_DYNAMIC_CACHE=2

Notez que réellement est activé par défaut et dans notre cas, nous voulons éteindre WEBSITE_DYNAMIC_CACHE=0