Preguntas más frecuentes sobre el rendimiento de aplicaciones para Web Apps de AzureApplication performance FAQs for Web Apps in Azure

Nota

Algunas de las siguientes directrices solo funcionen en Windows o Linux App Services.Some of the below guidelines might only work on Windows or Linux App Services. Por ejemplo, App Services de Linux se ejecute en modo de 64 bits de forma predeterminada.For example, Linux App Services run in 64-bit mode by default.

En este artículo se proporcionan las respuestas a las preguntas más frecuentes sobre los problemas relacionados con el rendimiento de las aplicaciones en la característica Web Apps de Azure App Service.This article has answers to frequently asked questions (FAQs) about application performance issues for the Web Apps feature of 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.If your Azure issue is not addressed in this article, visit the Azure forums on MSDN and Stack Overflow. Puede publicar su problema en ellos o @AzureSupport en Twitter.You can post your issue in these forums, or post to @AzureSupport on Twitter. También puede enviar una solicitud de soporte técnico de Azure.You also can submit an Azure support request. Para enviar una solicitud de soporte técnico, en la página de soporte técnico de Azure, seleccione Obtener soporte técnico.To submit a support request, on the Azure support page, select Get support.

¿Por qué mi aplicación es lenta?Why is my app slow?

Varios factores podrían contribuir a la ralentización del rendimiento de la aplicación.Multiple factors might contribute to slow app performance. Para obtener los pasos detallados de solución de problemas, consulte Solucionar los problemas de rendimiento reducido de aplicaciones web en Azure Web Apps.For detailed troubleshooting steps, see Troubleshoot slow web app performance.

¿Cómo puedo solucionar problemas en un escenario de consumo elevado de CPU?How do I troubleshoot a high CPU-consumption scenario?

En algunos escenarios de consumo elevado de CPU, es probable que la aplicación realmente requiera más recursos informáticos.In some high CPU-consumption scenarios, your app might truly require more computing resources. En ese caso, considere la posibilidad de escalar a un mayor nivel de servicio para que la aplicación obtenga todos los recursos necesarios. In that case, consider scaling to a higher service tier so the application gets all the resources it needs. En otras ocasiones, el consumo elevado de CPU podría deberse a un bucle incorrecto o una práctica de codificación.Other times, high CPU consumption might be caused by a bad loop or by a coding practice. Obtener una visión general de lo que está desencadenando ese mayor consumo de CPU es un proceso de dos partes.Getting insight into what's triggering increased CPU consumption is a two-part process. En primer lugar, cree un volcado de proceso y, después, analice el volcado de memoria del proceso.First, create a process dump, and then analyze the process dump. Para más información, consulte la entrada de blog Capture and analyze a dump file for high CPU consumption for Web Apps (Captura y análisis de un archivo de volcado de memoria para un consumo elevado de CPU para Web Apps).For more information, see Capture and analyze a dump file for high CPU consumption for Web Apps.

¿Cómo puedo solucionar problemas en un escenario de consumo elevado de memoria?How do I troubleshoot a high memory-consumption scenario?

En algunos escenarios de consumo elevado de memoria, es probable que la aplicación realmente requiera más recursos informáticos.In some high memory-consumption scenarios, your app might truly require more computing resources. En ese caso, considere la posibilidad de escalar a un mayor nivel de servicio para que la aplicación obtenga todos los recursos necesarios. In that case, consider scaling to a higher service tier so the application gets all the resources it needs. En otras ocasiones, un error del código podría producir una pérdida de memoria.Other times, a bug in the code might cause a memory leak. Una práctica de codificación también podría aumentar el consumo de memoria.A coding practice also might increase memory consumption. Obtener una visión general de lo que está desencadenando ese mayor consumo de memoria es un proceso de dos partes. Getting insight into what's triggering high memory consumption is a two-part process. En primer lugar, cree un volcado de proceso y, después, analice el volcado de memoria del proceso.First, create a process dump, and then analyze the process dump. El diagnóstico de bloqueos de la galería de extensión de sitios de Azure puede realizar de manera eficaz estos dos pasos.Crash Diagnoser from the Azure Site Extension Gallery can efficiently perform both these steps. Para más información, consulte la entrada de blog How to capture and analyze dump for intermittent High Memory on Azure Web App (Captura y análisis de un archivo de volcado de memoria para un consumo elevado intermitente de memoria para Web Apps).For more information, see Capture and analyze a dump file for intermittent high memory for Web Apps.

¿Cómo se puede automatizar App Service Web Apps mediante PowerShell?How do I automate App Service web apps by using PowerShell?

Puede usar los cmdlets de PowerShell para administrar y mantener App Service Web Apps.You can use PowerShell cmdlets to manage and maintain App Service web apps. En nuestra entrada de blog Automate web apps hosted in Azure App Service by using PowerShell (Automatización de aplicaciones web hospedadas en Azure App Service mediante PowerShell), se describe cómo usar los cmdlets de PowerShell basada en Azure Resource Manager para automatizar tareas comunes.In our blog post Automate web apps hosted in Azure App Service by using PowerShell, we describe how to use Azure Resource Manager-based PowerShell cmdlets to automate common tasks. La entrada de blog también incluye código de ejemplo para diversas tareas de administración de aplicaciones web.The blog post also has sample code for various web apps management tasks. Para obtener descripciones y sintaxis de todos los cmdlets de App Service Web Apps, consulte Az.Websites.For descriptions and syntax for all App Service web apps cmdlets, see Az.Websites.

¿Cómo se pueden ver los registros de eventos de mi aplicación web?How do I view my web app's event logs?

Para ver los registros de eventos de la aplicación web:To view your web app's event logs:

  1. Inicie sesión en su sitio web de Kudu.Sign in to your Kudu website.
  2. En el menú, seleccione Consola de depuración > CMD.In the menu, select Debug Console > CMD.
  3. Abra la carpeta LogFiles.Select the LogFiles folder.
  4. Para ver los registros de eventos, seleccione el icono de lápiz junto a eventlog.xml.To view event logs, select the pencil icon next to eventlog.xml.
  5. Para descargar los registros, ejecute el cmdlet de PowerShell Save-AzureWebSiteLog -Name webappname.To download the logs, run the PowerShell cmdlet Save-AzureWebSiteLog -Name webappname.

¿Cómo se puede capturar un volcado de memoria de modo de usuario de la aplicación web?How do I capture a user-mode memory dump of my web app?

Para capturar un volcado de memoria de modo de usuario de la aplicación web:To capture a user-mode memory dump of your web app:

  1. Inicie sesión en su sitio web de Kudu.Sign in to your Kudu website.
  2. Seleccione el menú Explorador de procesos.Select the Process Explorer menu.
  3. Haga clic con el botón derecho en el proceso w3wp.exe o en el proceso de trabajo web.Right-click the w3wp.exe process or your WebJob process.
  4. Seleccione Download Memory Dump > Full Dump (Descargar volcado de memoria > Volcado de memoria completo).Select Download Memory Dump > Full Dump.

¿Cómo se puede ver la información de nivel de proceso para mi aplicación web?How do I view process-level info for my web app?

Tiene dos opciones para ver la información de nivel de proceso para la aplicación web:You have two options for viewing process-level information for your web app:

  • En Azure Portal:In the Azure portal:
    1. Abra el explorador de procesos para la aplicación web.Open the Process Explorer for the web app.
    2. Para ver los detalles, seleccione el proceso w3wp.exe.To see the details, select the w3wp.exe process.
  • En la consola de Kudu:In the Kudu console:
    1. Inicie sesión en su sitio web de Kudu.Sign in to your Kudu website.
    2. Seleccione el menú Explorador de procesos.Select the Process Explorer menu.
    3. En el proceso w3wp.exe, seleccione Propiedades.For the w3wp.exe process, select Properties.

Cuando navego a mi aplicación, veo el error 403 que indica que la aplicación web se ha detenido.When I browse to my app, I see "Error 403 - This web app is stopped." ¿Cómo se resuelve este problema?How do I resolve this?

Este error pueden deberse a tres condiciones:Three conditions can cause this error:

  • La aplicación web ha alcanzado un límite de facturación y se ha deshabilitado el sitio.The web app has reached a billing limit and your site has been disabled.
  • La aplicación web se detuvo en el portal.The web app has been stopped in the portal.
  • La aplicación web ha alcanzado un límite de cuota de recursos que se puede aplicar a un plan de servicio de escala Gratis o Compartido.The web app has reached a resource quota limit that might apply to a Free or Shared scale service plan.

Para ver cuál es la causa del error y resolver el problema, siga los pasos de Web Apps: "Error 403 – This web app is stopped" (Web Apps: "Error 403: esta aplicación web se ha detenido").To see what is causing the error and to resolve the issue, follow the steps in Web Apps: "Error 403 – This web app is stopped".

¿Dónde puedo obtener más información sobre cuotas y límites de los diversos planes de App Service?Where can I learn more about quotas and limits for various App Service plans?

Para más información sobre cuotas y límites, consulte Límites de App Service.For information about quotas and limits, see App Service limits.

¿Cómo se puede reducir el tiempo de respuesta de la primera solicitud después de tiempo de inactividad?How do I decrease the response time for the first request after idle time?

De forma predeterminada, las aplicaciones web se descargan si están inactivas durante algún tiempo.By default, web apps are unloaded if they are idle for a set period of time. Esto permite que el sistema conserve recursos.This way, the system can conserve resources. El inconveniente es que la respuesta a la primera solicitud después de descargar la aplicación web es más larga, para que la aplicación web pueda cargar y comenzar a atender a las respuestas.The downside is that the response to the first request after the web app is unloaded is longer, to allow the web app to load and start serving responses. En los planes de servicio Básico y Estándar, puede activar el valor Siempre activado para que la aplicación web se mantenga cargada en todo momento.In Basic and Standard service plans, you can turn on the Always On setting to keep the app always loaded. Esto elimina mayores tiempos de carga después de la inactividad de la aplicación.This eliminates longer load times after the app is idle. Para cambiar la configuración de Siempre activado:To change the Always On setting:

  1. En Azure Portal, vaya a la aplicación web.In the Azure portal, go to your web app.
  2. Seleccione Configuración de la aplicación.Select Application settings.
  3. Para Siempre activado, seleccione Activado.For Always On, select On.

¿Cómo se activa el seguimiento de solicitudes con error?How do I turn on failed request tracing?

Para activar el seguimiento de solicitudes con error:To turn on failed request tracing:

  1. En Azure Portal, vaya a la aplicación web.In the Azure portal, go to your web app.

  2. Seleccione Toda la configuración > Registros de diagnóstico.Select All Settings > Diagnostics Logs.

  3. En Seguimiento de solicitudes con error, seleccione Activado.For Failed Request Tracing, select On.

  4. Seleccione Guardar.Select Save.

  5. En la hoja de aplicación web, seleccione Herramientas.On the web app blade, select Tools.

  6. Seleccione Visual Studio Online.Select Visual Studio Online.

  7. Si esta opción no está activada, seleccione Activado.If the setting is not On, select On.

  8. Seleccione Ir.Select Go.

  9. Seleccione Web.config.Select Web.config.

  10. En system.webServer, agregue esta configuración (para capturar una dirección URL específica):In system.webServer, add this configuration (to capture a specific URL):

    <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 está tardando más de 30 segundos):To troubleshoot slow-performance issues, add this configuration (if the capturing request is taking more than 30 seconds):

    <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 error, en el portal, vaya al sitio web.To download the failed request traces, in the portal, go to your website.

  13. Seleccione Herramientas > Kudu > Ir.Select Tools > Kudu > Go.

  14. En el menú, seleccione Consola de depuración > CMD.In the menu, select Debug Console > CMD.

  15. Seleccione la carpeta LogFiles y, después, seleccione la carpeta con un nombre que comienza por W3SVC.Select the LogFiles folder, and then select the folder with a name that starts with W3SVC.

  16. Para ver el archivo XML, seleccione el icono de lápiz.To see the XML file, select the pencil icon.

Aparece un mensaje que indica que el proceso de trabajo ha solicitado el reciclado debido a un límite de 'porcentaje de memoria'.I see the message "Worker Process requested recycle due to 'Percent Memory' limit." ¿Cómo se soluciona este problema?How do I address this issue?

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.The maximum available amount of memory for a 32-bit process (even on a 64-bit operating system) is 2 GB. De forma predeterminada, el proceso de trabajo está establecido en 32 bits en App Service (por compatibilidad con aplicaciones web heredadas).By default, the worker process is set to 32-bit in App Service (for compatibility with legacy web applications).

Considere la posibilidad de cambiar a procesos de 64 bits, por lo que podrá aprovechar la memoria adicional disponible en el rol de trabajo web.Consider switching to 64-bit processes so you can take advantage of the additional memory available in your Web Worker role. Esto desencadena un reinicio de la aplicación web, por lo que programe en consecuencia.This triggers a web app restart, so schedule accordingly.

Tenga en cuenta que un entorno de 64 bits requiere un plan de servicio Básico o Estándar.Also note that a 64-bit environment requires a Basic or Standard service plan. Los planes Gratis y Compartido siempre se ejecutan en un entorno de 32 bits.Free and Shared plans always run in a 32-bit environment.

Para más información, consulte Configuración de aplicaciones web en Azure App Service.For more information, see Configure web apps in App Service.

¿Por qué se agota el tiempo de espera de la solicitud después de 230 segundos?Why does my request time out after 230 seconds?

Azure Load Balancer tiene un valor de tiempo de expiración de inactividad predeterminado de cuatro minutos.Azure Load Balancer has a default idle timeout setting of four minutes. Por lo general, suele ser un límite de tiempo de respuesta razonable para una solicitud web.This is generally a reasonable response time limit for a web request. Si la aplicación web requiere un procesamiento en segundo plano, se recomienda el uso de Azure WebJobs.If your web app requires background processing, we recommend using Azure WebJobs. La aplicación web de Azure puede llamar a WebJobs y se recibirá una notificación cuando haya finalizado el procesamiento en segundo plano.The Azure web app can call WebJobs and be notified when background processing is finished. Puede elegir entre varios métodos para usar WebJobs, incluidos las colas y los desencadenadores.You can choose from multiple methods for using WebJobs, including queues and triggers.

WebJobs está pensado para el procesamiento en segundo plano.WebJobs is designed for background processing. Puede realizar tanto procesamiento en segundo plano como desee en un WebJob.You can do as much background processing as you want in a WebJob. Para más información, consulte Ejecutar tareas en segundo plano con WebJobs.For more information about WebJobs, see Run background tasks with WebJobs.

Las aplicaciones de ASP.NET Core hospedadas en App Service a veces dejan de responder.ASP.NET Core applications that are hosted in App Service sometimes stop responding. ¿Cómo se corrige este problema?How do I fix this issue?

Un problema conocido con una versión Kestrel anterior podía provocar que una aplicación de ASP.NET Core 1.0 hospedada en App Service de vez en cuando dejase de responder.A known issue with an earlier Kestrel version might cause an ASP.NET Core 1.0 app that's hosted in App Service to intermittently stop responding. También podría ver el mensaje: "La aplicación CGI especificada encontró un error y el servidor terminó el proceso".You also might see this message: "The specified CGI Application encountered an error and the server terminated the process."

Este problema está corregido Kestrel versión 1.0.2.This issue is fixed in Kestrel version 1.0.2. Esta versión se incluye en la actualización de ASP.NET Core 1.0.3.This version is included in the ASP.NET Core 1.0.3 update. Para resolver este problema, asegúrese de que actualiza las dependencias de la aplicación para usar Kestrel versión 1.0.2.To resolve this issue, make sure you update your app dependencies to use 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 1.0 slow perf issues in App Service web apps (Problemas de rendimiento lento de ASP.NET Core 1.0 en aplicaciones web de App Service).Alternatively, you can use one of two workarounds that are described in the blog post ASP.NET Core 1.0 slow perf issues in App Service web apps.

No se encuentran mis archivos de registro en la estructura de archivos de la aplicación web.I can't find my log files in the file structure of my web app. ¿Cómo se pueden encontrar?How can I find them?

Si utiliza la característica de caché local de App Service, la estructura de carpetas de las carpetas de archivos de registro y datos para la instancia de App Service se verá afectada.If you use the Local Cache feature of App Service, the folder structure of the LogFiles and Data folders for your App Service instance are affected. Cuando se utiliza la memoria caché local, se crean las subcarpetas en las carpetas de datos y de archivos de registro del almacenamiento.When Local Cache is used, subfolders are created in the storage LogFiles and Data folders. Las subcarpetas usan el patrón de nomenclatura "identificador único" + marca de tiempo.The subfolders use the naming pattern "unique identifier" + time stamp. Cada subcarpeta se corresponde con una instancia de máquina virtual en donde se ejecuta la aplicación web o se ha ejecutado.Each subfolder corresponds to a VM instance in which the web app is running or has run.

Para determinar si está utilizando la memoria caché local, compruebe la pestaña Configuración de la aplicación de App Service. Si se utiliza la memoria caché local, la configuración de la aplicación WEBSITE_LOCAL_CACHE_OPTION se establece en Always.To determine whether you are using Local Cache, check your App Service Application settings tab. If Local Cache is being used, the app setting WEBSITE_LOCAL_CACHE_OPTION is set to Always.

Si no se está usando la memoria caché local y está experimentando este problema, envíe una solicitud de soporte técnico.If you are not using Local Cache and are experiencing this issue, submit a support request.

Aparece un mensaje que indica que se realizó un intento de acceder a un socket de una manera prohibida por los permisos de acceso.I see the message "An attempt was made to access a socket in a way forbidden by its access permissions." ¿Cómo se resuelve este problema?How do I resolve this?

Este error suele producirse si se agotan las conexiones TCP salientes en la instancia de máquina virtual.This error typically occurs if the outbound TCP connections on the VM instance are exhausted. En App Service, los límites se aplican para el número máximo de conexiones salientes que puede realizar cada instancia de máquina virtual.In App Service, limits are enforced for the maximum number of outbound connections that can be made for each VM instance. Para más información, consulte la sección Cross-VM numerical limits (Límites numéricos entre máquinas virtuales).For more information, see Cross-VM numerical limits.

Este error también puede producirse si intenta tener acceso a una dirección local desde la aplicación.This error also might occur if you try to access a local address from your application. Para más información, consulte la sección Local address requests (Peticiones de direcciones locales).For more information, see Local address requests.

Para más información acerca de las conexiones salientes en la aplicación web, consulte la entrada de blog sobre conexiones salientes a sitios web de Azure.For more information about outbound connections in your web app, see the blog post about outgoing connections to Azure websites.

¿Cómo usar Visual Studio para depurar de forma remota la aplicación web de App Service?How do I use Visual Studio to remote debug my App Service web app?

Para ver un tutorial detallado que muestra cómo depurar la aplicación web con Visual Studio, consulte la entrada de blog Remote debug your App Service web app (Depuración de forma remota de la aplicación web de App Service).For a detailed walkthrough that shows you how to debug your web app by using Visual Studio, see Remote debug your App Service web app.