Preguntas más frecuentes sobre el rendimiento de las aplicaciones para Web Apps en Azure

Nota:

Algunas de las directrices siguientes solo pueden funcionar en Windows o Linux App Services. Por ejemplo, Linux App Services se ejecuta en modo de 64 bits de forma predeterminada.

Este artículo tiene respuestas a las preguntas más frecuentes sobre los problemas de rendimiento de las aplicaciones para la característica Web Apps de Azure App Service.

Si su problema con Azure no se trata en este artículo, visite los foros de Azure en MSDN y Stack Overflow. Puede publicar su problema en ellos o en @AzureSupport en Twitter. También puede enviar una solicitud de soporte de Azure. Para enviar una solicitud de soporte, en la página Soporte técnico de Azure, seleccione Obtener soporte técnico.

¿Por qué mi plan de App Service muestra el uso de CPU/memoria incluso cuando se detienen todos los Web Apps?

Azure App Service requiere procesos continuos del sistema que controlan varias operaciones y características de la plataforma, como actualizaciones de seguridad, disponibilidad de la consola de SCM, supervisión de aplicaciones, autenticación y muchas otras características vitales de la aplicación web.

Los procesos del sistema se ejecutarán en App Service Planes aunque no haya Web Apps en ejecución o si el plan de App Service no contiene Web Apps.

Los procesos de plataforma consumirán una cantidad mínima de recursos (como CPU, memoria y espacio en disco), y los mismos deben tenerse en cuenta durante la configuración del desencadenador de planeamiento de capacidad, supervisión y escalado automático de un plan de App Service.

¿Por qué mi aplicación es lenta?

Varios factores pueden contribuir a ralentizar el rendimiento de la aplicación. Para ver pasos detallados de solución de problemas, consulte Solución de problemas de rendimiento lento de aplicaciones web.

Cómo solucionar problemas de un escenario de consumo elevado de CPU?

En algunos escenarios de alto consumo de CPU, es posible que la aplicación realmente requiera más recursos informáticos. En ese caso, considere la posibilidad de escalar a un nivel de servicio superior para que la aplicación obtenga todos los recursos que necesita. Otras veces, el consumo elevado de CPU podría deberse a un bucle incorrecto o a una práctica de codificación. Obtener información sobre lo que desencadena un mayor consumo de CPU es un proceso de dos partes. En primer lugar, cree un volcado de proceso y, a continuación, analice el volcado de proceso. Para obtener más información, consulte Captura y análisis de un archivo de volcado de memoria para obtener un consumo elevado de CPU para Web Apps.

Cómo solucionar problemas de un escenario de alto consumo de memoria?

En algunos escenarios de alto consumo de memoria, es posible que la aplicación requiera realmente más recursos informáticos. En ese caso, considere la posibilidad de escalar a un nivel de servicio superior para que la aplicación obtenga todos los recursos que necesita. Otras veces, un error en el código podría provocar una pérdida de memoria. Una práctica de codificación también podría aumentar el consumo de memoria. Obtener información sobre lo que desencadena un consumo elevado de memoria es un proceso de dos partes. En primer lugar, cree un volcado de proceso y, a continuación, analice el volcado de proceso. El diagnóstico de bloqueos de la Galería de extensiones de sitio de Azure puede realizar ambos pasos de forma eficaz. Para obtener más información, consulte Captura y análisis de un archivo de volcado de memoria para obtener memoria alta intermitente para Web Apps.

Cómo automatizar App Service aplicaciones web mediante PowerShell?

Puede usar cmdlets de PowerShell para administrar y mantener App Service aplicaciones web. En nuestra entrada de blog Automatización de aplicaciones web hospedadas en Azure App Service mediante PowerShell, se describe cómo usar cmdlets de PowerShell basados en Azure Resource Manager para automatizar tareas comunes. La entrada de blog también tiene código de ejemplo para varias tareas de administración de aplicaciones web. Para obtener descripciones y sintaxis para todos los cmdlets de aplicaciones web App Service, consulte Az.Websites.

Cómo ver los registros de eventos de la aplicación web?

Para ver los registros de eventos de la aplicación web:

  1. Inicie sesión en su sitio web de Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. En el menú, seleccione Depurar cmd de consola>.
  3. Seleccione la carpeta LogFiles .
  4. Para ver los registros de eventos, seleccione el icono de lápiz situado junto a eventlog.xml.
  5. Para descargar los registros, ejecute el cmdlet Save-AzureWebSiteLog -Name webappnamede PowerShell .

Cómo capturar un volcado de memoria en modo de usuario de mi aplicación web?

Para capturar un volcado de memoria en modo de usuario de la aplicación web:

  1. Inicie sesión en su sitio web de Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
  2. Seleccione el menú Explorador de procesos .
  3. Haga clic con el botón derecho en el proceso dew3wp.exe o en el proceso de WebJob.
  4. Seleccione Descargar volcado completo de> memoria.

Cómo ver la información de nivel de proceso de mi aplicación web?

Tiene dos opciones para ver la información de nivel de proceso de la aplicación web:

  • En el portal de Azure:
    1. Abra el Explorador de procesos de la aplicación web.
    2. Para ver los detalles, seleccione el proceso dew3wp.exe .
  • En la consola de Kudu:
    1. Inicie sesión en su sitio web de Kudu (https://*yourwebsitename*.scm.azurewebsites.net).
    2. Seleccione el menú Explorador de procesos .
    3. Para el proceso dew3wp.exe , seleccione Propiedades.

Cuando voy a mi aplicación, veo "Error 403 - Esta aplicación web está detenida". Cómo resolver esto?

Tres condiciones pueden provocar este error:

  • La aplicación web ha alcanzado un límite de facturación y el sitio se ha deshabilitado.
  • La aplicación web se ha detenido en el portal.
  • La aplicación web ha alcanzado un límite de cuota de recursos que podría aplicarse a un plan de servicio de escalado gratuito o compartido.

Para ver lo que provoca el error y resolver el problema, siga los pasos descritos en Web Apps: "Error 403 : esta aplicación web está detenida".

¿Dónde puedo obtener más información sobre las cuotas y los límites de varios planes de App Service?

Para obtener información sobre las cuotas y los límites, consulte límites de App Service.

Cómo reducir el tiempo de respuesta de la primera solicitud después del tiempo de inactividad?

De forma predeterminada, las aplicaciones web se descargan si están inactivas durante un período de tiempo establecido. De este modo, el sistema puede conservar los recursos. El inconveniente es que la respuesta a la primera solicitud después de descargar la aplicación web es más larga, para permitir que la aplicación web se cargue y empiece a atender respuestas. En los planes de servicio Básico y Estándar, puede activar la configuración de Always On para mantener la aplicación siempre cargada. Esto elimina los tiempos de carga más largos después de que la aplicación esté inactiva. Para cambiar la configuración de Always On:

  1. En el Azure Portal, vaya a la aplicación web.
  2. Seleccionar configuración
  3. Seleccione Configuración general.
  4. Para Always On, seleccione Activado.

Cómo activar el seguimiento de solicitudes con errores?

Para activar el seguimiento de solicitudes con errores, siga estos pasos:

  1. En el Azure Portal, vaya a la aplicación web.

  2. Seleccione Todos los registros de diagnóstico de configuración>.

  3. En Seguimiento de solicitudes con error, seleccione Activado.

  4. Seleccione Guardar.

  5. En la hoja de la aplicación web, seleccione Herramientas.

  6. Seleccione Visual Studio Online.

  7. Si la configuración no está activada, seleccione Activado.

  8. Seleccione Ir.

  9. Seleccione Web.config.

  10. En system.webServer, agregue la siguiente configuración (para capturar una dirección URL específica):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. Para solucionar problemas de rendimiento lento, agregue esta configuración (si la solicitud de captura tarda más de 30 segundos):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. Para descargar los seguimientos de solicitudes con errores, vaya al sitio web en el portal.

  13. Seleccione Herramientas>Kudu>Go.

  14. En el menú, seleccione Depurar cmd de consola>.

  15. Seleccione la carpeta LogFiles y, a continuación, seleccione la carpeta con un nombre que comience por W3SVC.

  16. Para ver el archivo XML, seleccione el icono de lápiz.

Veo el mensaje "Proceso de trabajo solicitado reciclaje debido al límite de porcentaje de memoria". Cómo solucionar este problema?

La cantidad máxima de memoria disponible para un proceso de 32 bits (incluso en un sistema operativo de 64 bits) es de 2 GB. De forma predeterminada, el proceso de trabajo se establece en 32 bits en App Service (por compatibilidad con aplicaciones web heredadas).

Considere la posibilidad de cambiar a procesos de 64 bits para que pueda aprovechar la memoria adicional disponible en el rol trabajo web. Esta acción desencadena un reinicio de la aplicación web, así que programe en consecuencia.

Tenga en cuenta también que un entorno de 64 bits requiere un plan de servicio básico o estándar. Los planes gratuitos y compartidos siempre se ejecutan en un entorno de 32 bits.

Para obtener más información, consulte Configuración de aplicaciones web en App Service.

¿Por qué se agota el tiempo de espera de mi solicitud después de 230 segundos?

Azure Load Balancer tiene una configuración de tiempo de espera de inactividad predeterminada de cuatro minutos. Esta configuración suele ser un límite de tiempo de respuesta razonable para una solicitud web. por lo tanto, App Service devuelve un tiempo de espera al cliente si la aplicación no devuelve una respuesta en aproximadamente 240 segundos (230 segundos en la aplicación Windows, 240 segundos en la aplicación Linux). Si la aplicación web requiere procesamiento en segundo plano, se recomienda usar Azure WebJobs. La aplicación web de Azure puede llamar a WebJobs y recibir una notificación cuando finalice el procesamiento en segundo plano. Puede elegir entre varios métodos para usar WebJobs, incluidas las colas y los desencadenadores.

WebJobs está diseñado para el procesamiento en segundo plano. Puede realizar todo el procesamiento en segundo plano que desee en un trabajo web. Para obtener más información sobre WebJobs, consulte Ejecución de tareas en segundo plano con WebJobs.

ASP.NET Core aplicaciones hospedadas en App Service a veces dejan de responder. Cómo solucionar este problema?

Un problema conocido con una versión anterior de Kestrel puede provocar que una aplicación de ASP.NET Core 1.0 hospedada en App Service deje de responder de forma intermitente. También puede ver este mensaje: "La aplicación CGI especificada encontró un error y el servidor finalizó el proceso".

Este problema se ha corregido en Kestrel, versión 1.0.2. Esta versión se incluye en la actualización de ASP.NET Core 1.0.3. Para resolver este problema, asegúrese de actualizar las dependencias de la aplicación para que usen Kestrel 1.0.2. Como alternativa, puede usar una de las dos soluciones alternativas que se describen en la entrada de blog ASP.NET Core problemas de rendimiento lento de 1,0 en App Service aplicaciones web.

No puedo encontrar mis archivos de registro en la estructura de archivos de mi aplicación web. ¿Cómo puedo encontrarlos?

Si usa la característica Caché local de App Service, la estructura de carpetas de las carpetas LogFiles y Data de la instancia de App Service se ve afectada. Cuando se usa caché local, se crean subcarpetas en las carpetas LogFiles y Data de almacenamiento. Las subcarpetas usan el patrón de nomenclatura "identificador único" + marca de tiempo. Cada subcarpeta corresponde a una instancia de máquina virtual en la que la aplicación web se está ejecutando o se ha ejecutado.

Para determinar si usa caché local, compruebe la pestaña Configuración de App Service aplicación. Si se usa la caché local, la configuración de WEBSITE_LOCAL_CACHE_OPTION la aplicación se establece en Always.

Si no usa la caché local y experimenta este problema, envíe una solicitud de soporte técnico.

Veo el mensaje "Se intentó acceder a un socket de una manera prohibida por sus permisos de acceso". Cómo resolver este error?

Este error suele producirse si se agotan las conexiones TCP salientes en la instancia de máquina virtual. En App Service, se aplican límites para el número máximo de conexiones salientes que se pueden realizar para cada instancia de máquina virtual. Para obtener más información, consulte Límites numéricos entre máquinas virtuales.

Este error también puede producirse si intenta acceder a una dirección local desde la aplicación. Para obtener más información, vea Solicitudes de direcciones locales.

Para obtener más información sobre las conexiones salientes en la aplicación web, consulte la entrada de blog sobre las conexiones salientes a sitios web de Azure.

Cómo usar Visual Studio para depurar de forma remota mi aplicación web de App Service?

Para ver un tutorial detallado que muestra cómo depurar la aplicación web mediante Visual Studio, consulte Depuración remota de la aplicación web App Service.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.