|
| 1 | +--- |
| 2 | +title: 'General performance troubleshooting of Azure Front Door' |
| 3 | +titleSuffix: Azure Front Door |
| 4 | +description: In this article, investigate, diagnose and resolve potential latency or bandwidth issues associated with an Azure Front Door related site performance |
| 5 | +services: frontdoor |
| 6 | +author: sbdoroff |
| 7 | +ms.service: frontdoor |
| 8 | +ms.topic: how-to |
| 9 | +ms.workload: infrastructure-services |
| 10 | +ms.date: 08/30/2023 |
| 11 | +ms.author: stdoroff |
| 12 | +#Customer intent: As a <type of user>, I want <some goal> so that <some reason>. |
| 13 | +--- |
| 14 | + |
| 15 | +# Azure Front Door Performance |
| 16 | + |
| 17 | +Performance issues can originate in several potential areas. This guide in identifying which hop along the data-path is most likely the root of the issue and how to resolve. As a brief overview, the issue could be at the Azure Front Door, the origin, the requesting client or the path between any of these hops. |
| 18 | + |
| 19 | +## Check for Known Issues |
| 20 | + |
| 21 | +Before beginning, be sure to check for any [known issues on the Azure Front Door platform](https://azure.status.microsoft/status), any known ISPs in the path or on the requesting client's ability to connect and retrieve data. |
| 22 | + |
| 23 | +## Scenario 1: Investigate the Origin |
| 24 | + |
| 25 | +If one of the origin servers are slow, then the first request for an object via the Azure Front Door is slow. Further, if the content isn't cached at the Azure Front Door's Point of Presence (POP), requests are forwarded to the origin. Serving from the origin negates the benefit of the POP's proximity and local delivery to the requesting client, and, instead, rely on the origin's performance. |
| 26 | + |
| 27 | +### Scenario 1 | Environment Information Needed |
| 28 | + |
| 29 | +- Azure Front Door / Endpoint Name |
| 30 | + - Endpoint Hostname |
| 31 | + - Endpoint Custom Domain (if applicable) |
| 32 | + - Origin Hostname |
| 33 | +- Full URL of Affected File |
| 34 | + |
| 35 | +### Scenario 1 | Troubleshooting Steps |
| 36 | + |
| 37 | +1. Check the response headers from the affected request |
| 38 | + |
| 39 | + > [!TIP] |
| 40 | + > To check response headers, utilize your browser's Developer Tools (F12), select the *Networking* tab, then the relevant file to be investigated, then the *Headers* tab. ***If the file is missing*** the page need to be reloaded with Developer Tools (F12) open. |
| 41 | + |
| 42 | + - The initial response should have an *x-cache* header with *TCP_MISS* value |
| 43 | + - Requests with this value are forwarded by the Azure Front Door's POP to the origin and returning on that same path to the requesting client |
| 44 | + - Examples |
| 45 | + - TCP_MISS |
| 46 | + |
| 47 | + ```bash |
| 48 | + $ curl -I "https://S*******.z01.azurefd.net/media/EteSQSGXMAYVUN_?format=jpg&name=large" |
| 49 | + HTTP/2 200 |
| 50 | + cache-control: max-age=604800, must-revalidate |
| 51 | + content-length: 248381 |
| 52 | + content-type: image/jpeg |
| 53 | + last-modified: Fri, 05 Feb 2021 15:34:05 GMT |
| 54 | + accept-ranges: bytes |
| 55 | + age: 0 |
| 56 | + server: ECS (sjc/4E76) |
| 57 | + x-xcachep2c-originurl: https://p****.com:443/media/EteSQSGXMAYVUN_? format=jpg&name=large |
| 58 | + x-xcachep2c-originip: 72.21.91.70 |
| 59 | + access-control-allow-origin: * |
| 60 | + access-control-expose-headers: Content-Length |
| 61 | + strict-transport-security: max-age=631138519 |
| 62 | + surrogate-key: media media/bucket/9 media/1357714621109579782 |
| 63 | + x-cache: TCP_MISS |
| 64 | + x-connection-hash: 8c9ea346f78166a032b347a42d8cc561 |
| 65 | + x-content-type-options: nosniff |
| 66 | + x-response-time: 26 |
| 67 | + x-tw-cdn: VZ |
| 68 | + x-azure-ref-originshield: 0MlAkYAAAAACtEkUH8vEbTIFoZe4xuRLOU0pDRURHRTA1MDgAZDM0ZjBhNGUtMjc4 |
| 69 | + x-azure-ref: 0MlAkYAAAAACayEVNiWaKRI61MXUgRe97REFMRURHRTEwMTQAZDM0ZjBhNGUtMjc4 |
| 70 | + date: Wed, 10 Feb 2021 21:29:22 GMT |
| 71 | + ``` |
| 72 | + |
| 73 | + - TCP_HIT |
| 74 | + |
| 75 | + ```bash |
| 76 | + $ curl -I "https://S*******.z01.azurefd.net/media/EteSQSGXMAYVUN_?format=jpg&name=large" |
| 77 | + HTTP/2 200 |
| 78 | + cache-control: max-age=604800, must-revalidate |
| 79 | + content-length: 248381 |
| 80 | + content-type: image/jpeg |
| 81 | + last-modified: Fri, 05 Feb 2021 15:34:05 GMT |
| 82 | + accept-ranges: bytes |
| 83 | + age: 0 |
| 84 | + server: ECS (sjc/4E76) |
| 85 | + x-xcachep2c-originurl: https://p****.com:443/media/EteSQSGXMAYVUN_?format=jpg&name=large |
| 86 | + x-xcachep2c-originip: 72.21.91.70 |
| 87 | + access-control-allow-origin: * |
| 88 | + access-control-expose-headers: Content-Length |
| 89 | + strict-transport-security: max-age=631138519 |
| 90 | + surrogate-key: media media/bucket/9 media/1357714621109579782 |
| 91 | + x-cache: TCP_HIT |
| 92 | + x-connection-hash: 8c9ea346f78166a032b347a42d8cc561 |
| 93 | + x-content-type-options: nosniff |
| 94 | + x-response-time: 26 |
| 95 | + x-tw-cdn: VZ |
| 96 | + x-azure-ref-originshield: 0MlAkYAAAAACtEkUH8vEbTIFoZe4xuRLOU0pDRURHRTA1MDgAZDM0ZjBhNGUtMjc4Mi00OWVhLWIzNTYtN2MzYj |
| 97 | + x-azure-ref: 0NVAkYAAAAABHk4Fx0cOtQrp6cHFRf0ocREFMRURHRTEwMDUAZDM0ZjBhNGUtMjc4Mi00OWVhLWIzNTYtN2MzYj |
| 98 | + date: Wed, 10 Feb 2021 21:29:25 GMT |
| 99 | + ``` |
| 100 | + |
| 101 | +1. Continue to request against the endpoint until the *x-cache* header has a *TCP_HIT* value |
| 102 | +1. ***If the performance issue is resolved***, then the issue was based on the origin's speed, and isn't the Azure Front Door's performance. The Azure Front Door's cache settings or the origin need to be address by its owner to resolve the performance issue. |
| 103 | +1. ***If the issue persists***, then the issue may be with the client requesting the content or the Azure Front Door |
| 104 | + A. Move to Scenario 2 to identify |
| 105 | + |
| 106 | +## Scenario 2: A Single Client or Location (example: ISP) is Slow |
| 107 | + |
| 108 | +A single client or location being slow can happen if there's a bad network route between the requesting client and the Azure Front Door POP. Any bad route should be ruled out as it affects the distance to the POP, removing the Azure Front Door POP's proximity benefit. |
| 109 | + |
| 110 | +High latency, or low bandwidth, could be because of an ISP issue, the customer is using a VPN or they're a part of a dispersed corporate network. A corporate network can run all traffic through a central, remote point. |
| 111 | +
|
| 112 | +### Scenario 2 | Environment Information Needed |
| 113 | +
|
| 114 | +- Azure Front Door / Endpoint Name |
| 115 | + - Endpoint Hostname |
| 116 | + - Endpoint Custom Domain (if applicable) |
| 117 | + - Origin Hostname |
| 118 | +- Full URL of Affected File |
| 119 | +- Requesting Client Information |
| 120 | + - Requesting Client IP |
| 121 | + - Requesting Client Location |
| 122 | + - Requesting Client Path to Azure Environment (Usually identified with [TraceRoute](/windows-server/administration/windows-commands/tracert), [PathPing](/windows-server/administration/windows-commands/pathping) or a similar tool). |
| 123 | +
|
| 124 | +### Scenario 2 | Troubleshooting Steps |
| 125 | +
|
| 126 | +1. To check the path to the POP, use [PathPing](/windows-server/administration/windows-commands/pathping) or similar tool for 500 packets to check the network route. *PathPing maxes at 250 queries. To test to 500, run the below query twice* |
| 127 | +
|
| 128 | + ```Console |
| 129 | + pathping /q 250 <Full URL of Affected File> |
| 130 | + ``` |
| 131 | +
|
| 132 | +1. Determine if the traffic is taking a path that would add time or travel to a distant region |
| 133 | + - Look for IP, city or region codes that don't take a reasonable route based on the customer’s geography (example: a customer in Europe getting routed to the United States), or excessive number of hops |
| 134 | +1. Test from a different requesting client in the same region |
| 135 | +1. **If additional hops or remote regions are identified**, the issue is with the client accessing the Azure Front Door POP and not with the Azure Front Door itself. Hops between endpoints needs to be addressed by the connectivity or VPN provider. |
| 136 | +1. **If additional hops or remote regions are not identified** AND the content is being served from cache (x-cache: TCP_HIT), the issue is with the Azure Front Door and a Support Request may need to be created. Include a reference to this troubleshooting article and steps taken. |
| 137 | + - ***Note***: , when the content is being served from the origin (x-cache: TCP_MISS), see Scenario 1 above |
| 138 | + |
| 139 | +## Scenario 3: A Website Loads Slowly |
| 140 | + |
| 141 | +There are some scenarios where there is ***not*** an issue with a single file but the performance of the whole, Azure Front Door proxied, webpage is unsatisfactory. Site performance is revealed by a webpage performance tool and shows under performance compared to the webpage outside of Azure Front Door. |
| 142 | + |
| 143 | +A webpage often consists of many files. The way the website benefits from the Azure Front Door is only if each file in the webpage is being served from the Azure Front Door. Additionally, the Azure Front Door must be configured to maximize the benefit. For example: |
| 144 | + |
| 145 | +- Origin: origin.contoso.com |
| 146 | +- Azure Front Door Custom Domain: contoso.com |
| 147 | +- Page customer attempts to load: https://contoso.com |
| 148 | +- **Explanation**: When the page loads, the initial file at the "/" directory calls other files, which build the page. These files are images, JavaScript, text files and more. If those files aren't called via the Azure Front Door hostname, *contoso.com*, the Azure Front Door is ***not*** being utilized. So, if one of the file requested by the website is *`http://www.images.fabrikam.com/businessimage.jpg`* the file is ***not*** benefiting from the use of the Azure Front Door. Instead, the file is being requested directly, from the *`images.fabrikam.com`* server, by the browser on the requesting client. |
| 149 | +
|
| 150 | + :::image type="content" source="media/troubleshoot-performance-issues/azure-front-door-performance.jpg" alt-text="Diagram of multiple, differently sourced files for a singular website and how it affects Azure Front Door performance."::: |
| 151 | +
|
| 152 | +### Scenario 3 | Environment Information Needed |
| 153 | +
|
| 154 | +- Azure Front Door / Endpoint Name |
| 155 | + - Endpoint Hostname |
| 156 | + - Endpoint Custom Domain (if applicable) |
| 157 | + - Origin Hostname |
| 158 | + - Geographical location of the origin |
| 159 | +- Full URL of Affected Webpage |
| 160 | +- Tool and metric, which is measuring performance |
| 161 | +
|
| 162 | +### Scenario 3 | Troubleshooting |
| 163 | +
|
| 164 | +1. Review the metric, which is showing the slower performance |
| 165 | + > [!IMPORTANT] |
| 166 | + > If it is based on a third part tool, Microsoft cannot discern what is being measure by tools not owned by Microsoft |
| 167 | +1. Pull up the Azure Front Door webpage in a Browser with Developer Tools (F12) enabled |
| 168 | + > [!NOTE] |
| 169 | + > Developer tools in your browser can be used to determine the source of the files being served |
| 170 | +1. Note the source of files |
| 171 | +1. Identify which files are utilizing the Azure Front Door hostname and which aren't |
| 172 | + A. Example: From the above example, an Azure Front Door hosted image would be, `https://www.contoso.com/productimage1.jpg`, and that which wouldn't be, `http://www.images.fabrikam.com/businessimage.jpg` |
| 173 | +1. Once gathered test performance for file being served from Azure Front Door, its origin and, if applicable, the testing webpage |
| 174 | + > [!IMPORTANT] |
| 175 | + > If the origin or testing webpage is served from a geographical region closer to the tool testing performance, a tool or requesting client may need to be used in another region to examine the Azure Front Door POP's proximity benefit |
| 176 | + |
| 177 | + > [!CAUTION] |
| 178 | + > If files are meant to be cached, be sure to test files that have the response header *x-cache: TCP_HIT* |
| 179 | + |
| 180 | + > [!IMPORTANT] |
| 181 | + > Any files served from outside the Azure Front Door's hostname will not be able to benefit from it and the webpage may need to be redesigned to do so |
| 182 | + |
| 183 | +1. **If the collected data shows that files are being issued from servers outside the Azure Front Door's hostname or performance is better at the Azure Front Door**, the Azure Front Door is working as expected |
| 184 | + A. Slowly loading websites may require a change in webpage design, for assistance in optimizing your website to use an Azure Front Door, connect with your website design team or our [Microsoft Solution Providers](https://www.microsoft.com/solution-providers/home) |
| 185 | + > [!NOTE] |
| 186 | + > Slowly loading websites issue could take time to review based on the complexity of a website's design and it's file calling instructions |
| 187 | +1. **If the collected data shows that performance is ***not*** better at the Azure Front Door**, a Support Request is likely required for further investigation. Include a reference to this troubleshooting article and steps taken. |
0 commit comments