【應用服務 App Service】App Service使用Git部署時,碰見500錯誤

問題描述

Azure App Service在部署的時候支持多種方式,如Zip,VS 2019, VS Code,或者是Git部署,當使用Git部署碰見500錯誤時,能夠經過其餘的部署方式來驗證是否也一樣不能夠成功。也能夠直接登陸到Kudu站點,拖拽文件的方式部署站點。git

如如下圖片就是在使用Git部署時候碰見的錯誤:github

因爲這裏的錯誤信息只是返回500,而沒有跟多詳細的錯誤日誌,因此能夠經過 git log -p 命令打印出所有日誌。查看是否有能夠定位錯誤的信息,在此次的500錯誤中,git 日誌中沒有任何錯誤描述。web

 

因此針對以上的問題,須要換一種方式來發布文件。查看是否能夠發佈成功。windows

最終解決

在後期的繼續分析中,發現是App Service的磁盤空間已被佔滿,出現了OnErrorRequest System.IO.IOException: There is not enough space on the disk的信息,這下就很是明確是磁盤空間不夠,解決辦法就是清理文件或者是把App Service的訂價層升級。獲得更多的存儲空間。app

 

若是想了解更多關於App Service 文件系統,能夠查看github文檔:https://github.com/projectkudu/kudu/wiki/Understanding-the-Azure-App-Service-file-systemflex

Understanding the Azure App Service file system

There are three main types of files that an Azure Web App can deal withthis

Persisted files

This is what you can view as your web site's files. They follow a structure described here. They are rooted in d:\home, which can also be found using the %HOME% environment variable. For App Service on Linux and Web app for Containers, persistent storage is rooted in /home.spa

These files are persistent, meaning that you can rely on them staying there until you do something to change them. Also, they are shared between all instances of your site (when you scale it up to multiple instances). Internally, the way this works is that they are stored in Azure Storage instead of living on the local file system.rest

Free and Shared sites get 1GB of space, Basic sites get 10GB, and Standard sites get 50GB. See more details on the Web App Pricing page.日誌

Temporary files

A number of common Windows locations are using temporary storage on the local machine. For instance

  • %APPDATA% points to something like D:\local\AppData.
  • %TMP% goes to D:\local\Temp.

Unlike Persisted files, these files are not shared among site instances. Also, you cannot rely on them staying there. For instance, if you restart a web app, you'll find that all of these folders get reset to their original state.

For Free, Shared and Consumption (Functions) sites, there is a 500MB limit for all these locations together (i.e. not per-folder).

For Standard and Basic sites, the limit is higher and differs depending on the SKU. The limit applies to all sites in the same App Service Plan. For instance, if you have 10 sites in S2 App Service Plan, those sites (and their scm sites) will have a combined limit of 15 GB. See limit for other SKU below.

SKU Family B1/S1/etc. B2/S2/etc. B3/S3/etc.
Basic, Standard, Premium 11 GB 15 GB 58 GB
PremiumV2, Isolated 21 GB 61 GB 140 GB

Another important note is that the Main site and the scm site do not share temp files. So if you write some files there from your site, you will not see them from Kudu Console (and vice versa). You can make them use the same temp space if you disable separation (via WEBSITE_DISABLE_SCM_SEPARATION). But note that this is a legacy flag, and its use is not recommended/supported.

You can check your limit and usage in portal by going to "Diagnose and solve problems" section of your App Service blade, selecting "Best Practices", "Best Practices for Availability, Performance", and then "Temp File Usage On Workers". Please note that the displayed usage and limits are per worker, and are aggregated across all apps in the same app service plan.

Machine level read-only files

The Web App is able to access many standard Windows locations like %ProgramFiles% and %windir%. These files can never be modified by the Web App.

相關文章
相關標籤/搜索