Hiệu suất của ứng dụng

Thư viện ứng dụng Google Ads .NET giúp đơn giản hoá các hoạt động tương tác của ứng dụng với API Google Ads bằng cách giảm thiểu cấu hình. Tuy nhiên, hiệu suất tổng thể phụ thuộc nhiều vào cách sử dụng và tích hợp thư viện với ứng dụng của bạn.

Hướng dẫn này đề cập đến các cách tối ưu hoá hiệu suất dành riêng cho ứng dụng .NET, đồng thời bổ sung các phương pháp hay nhất có thể áp dụng chung cho API Google Ads.

Sử dụng lại GoogleAdsClient bất cứ khi nào có thể

GoogleAdsClient thể hiện phiên hoạt động của người dùng khi thực hiện lệnh gọi API. Công cụ này cung cấp các tính năng tối ưu hoá như:

  • Lưu các kênh gRPC mà các dịch vụ API sử dụng vào bộ nhớ đệm. Điều này làm giảm thời gian thiết lập khi thực hiện các lệnh gọi API ban đầu.
  • Sử dụng lại mã truy cập khi có thể. Điều này giúp giảm số lượt khứ hồi mà thư viện ứng dụng .NET của Google Ads phải thực hiện để làm mới mã truy cập.

Sử dụng mã truy cập từ tài khoản cấp người quản lý khi có thể

  • Nếu có mã truy cập được phát hành ở cấp tài khoản người quản lý, bạn có thể sử dụng mã đó để thực hiện lệnh gọi API đối với tất cả tài khoản khách hàng Google Ads thuộc hệ phân cấp tài khoản đó. Khi kết hợp với việc sử dụng lại các thực thể GoogleAdsClient, điều này có thể làm giảm thêm số lượt trọn vòng mà thư viện ứng dụng phải thực hiện để làm mới mã truy cập.

Sử dụng SearchStream thay vì Search bất cứ khi nào có thể

Mặc dù GoogleAdsService.Search có thể gửi nhiều yêu cầu được phân trang để tải toàn bộ báo cáo xuống, nhưng GoogleAdsService.SearchStream lại gửi một yêu cầu duy nhất và bắt đầu kết nối liên tục với API Google Ads bất kể quy mô báo cáo. Bằng cách loại bỏ thời gian mạng khứ hồi cần thiết để yêu cầu từng trang riêng lẻ của một phản hồi Search, tuỳ thuộc vào ứng dụng của bạn, SearchStream có thể cải thiện hiệu suất so với tính năng phân trang. Vui lòng xem bài viết Tìm kiếm so với SearchStream để tìm hiểu thêm về tính năng tối ưu hoá này.

Quản lý việc làm mới mã truy cập theo cách thủ công

Trong một số môi trường chẳng hạn như Google Cloud Function, bạn có thể không sử dụng lại được các thực thể GoogleAdsClient. Các môi trường như vậy có thể có các phương pháp hay nhất của riêng chúng để duy trì và sử dụng lại dữ liệu. Trong những trường hợp như vậy, bạn có thể mở rộng lớp GoogleAdsConfig để thực hiện việc làm mới mã truy cập của riêng mình như sau.

// Create your own config class by extending the GoogleAdsConfig class.

class MyGoogleAdsConfig : GoogleAdsConfig
{
    public MyGoogleAdsConfig() : base()
    {
        // Disable the library's in-built channel caching mechanism.
        this.UseChannelCache = false;
    }
    protected override ICredential CreateCredentials()
    {
        // TODO: Create your own ICredentials object here. You may refer to the
        // default implementation of GoogleAdsConfig::CreateCreateCredentials
        // for an example.
    }
}

// Use your own config class when initializing the GoogleAdsClient instance.

MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);

Biên dịch cho bản phát hành

Đảm bảo bạn biên dịch ứng dụng bằng cách sử dụng Cấu hình phát hành khi triển khai tới máy chủ. Khi sử dụng cấu hình Gỡ lỗi, ứng dụng của bạn sẽ biên dịch với thông tin gỡ lỗi bằng biểu tượng đầy đủ và không có tính năng tối ưu hoá.

Lập hồ sơ ứng dụng

Phân tích tài nguyên cho ứng dụng của bạn cả về mức sử dụng CPU và bộ nhớ để xác định nút thắt cổ chai về hiệu suất. Visual Studio cung cấp các công cụ chẩn đoán giúp bạn lập hồ sơ cho ứng dụng. Ngoài ra, còn có nhiều công cụ lập hồ sơ thương mại khác.

Sử dụng phương thức không đồng bộ

Lập trình không đồng bộ sử dụng mô hình chờ không đồng bộ giúp tránh nút thắt cổ chai về hiệu suất và tăng khả năng phản hồi tổng thể của ứng dụng. Thư viện Google Ads .NET tạo các phương thức không đồng bộ cho tất cả các dịch vụ và phương thức RPC.

Tắt tính năng ghi nhật ký khi có thể

Theo mặc định, thư viện Google Ads .NET sẽ tắt tính năng ghi nhật ký và sử dụng phương pháp ghi nhật ký từng phần để mang lại hiệu suất tốt hơn cho ứng dụng của bạn. Nếu bạn bật tính năng ghi nhật ký, hãy nhớ tắt tính năng này trong môi trường phát hành chính thức. Nếu cần theo dõi các yêu cầu cụ thể không thành công trong phiên bản chính thức, bạn có thể thực hiện một hoặc nhiều bước sau đây mà không ảnh hưởng tiêu cực đến hiệu suất của ứng dụng:

  • Chỉ bật nhật ký tóm tắt.
  • Đặt toàn bộ nhật ký ở cấp ERROR.
  • Lưu mã yêu cầu cho các yêu cầu cụ thể mà bạn quan tâm mà bạn có thể chia sẻ với các kênh hỗ trợ.

Xem hướng dẫn ghi nhật ký để tìm hiểu thêm.

Quyết định sử dụng phương thức SearchStream hay Tìm kiếm

API Google Ads cung cấp 2 cách chính để truy xuất các đối tượng: phương thức Search (sử dụng tính năng phân trang) và SearchStream (sử dụng tính năng truyền trực tuyến).

SearchStream mang lại hiệu suất tốt hơn so với Search, nhưng có các trường hợp ưu tiên Search.

Xem hướng dẫn về báo cáo phát trực tuyến để tìm hiểu thêm về 2 phương pháp này.

Sử dụng tuỳ chọn ReadyToRun

.NET Core 3.1 hỗ trợ biên dịch sẵn tệp nhị phân của bạn cho một nền tảng và cấu trúc cụ thể bằng cách chỉ định chế độ cài đặt PublishReadyToRun thành true, sau đó phát hành tệp nhị phân bằng cách chỉ định RuntimeIdentifier hợp lệ khi phát hành. Hãy xem hướng dẫn về tính năng ReadyToRun để tìm hiểu thêm.

Sử dụng TieredCompilation

TieredCompilation cho phép .NET xác định điểm phát sóng và cải thiện hiệu suất. Tính năng biên dịch theo lớp hoạt động hiệu quả hơn với tuỳ chọn ReadyToRun vì tính năng này có thể sử dụng hình ảnh được tạo trước khi có sẵn. Hãy xem hướng dẫn trên TieredCompilation để tìm hiểu thêm.

Tinh chỉnh tính năng thu gom rác (GC)

.NET cung cấp hai hồ sơ chung cho việc thu thập rác (GC): hồ sơ máy trạm và hồ sơ máy chủ. 2 hồ sơ này có sự đánh đổi hiệu suất khác nhau. Các ứng dụng dùng thư viện .NET của Google Ads có xu hướng hoạt động tốt hơn khi chạy trong hồ sơ máy chủ. Bạn có thể hưởng lợi từ việc tinh chỉnh các chế độ cài đặt GC sau đây.

  • Thu thập rác trên máy chủ: Tính năng thu thập rác của máy chủ cho phép thời gian chạy .NET mang lại hiệu suất tốt hơn cho ứng dụng API Google Ads bằng cách hoạt động trên nhiều luồng. Hãy xem hướng dẫn này để biết thêm thông tin chi tiết. Bạn có thể bật tính năng thu thập rác của máy chủ bằng cách thêm các dòng sau vào tệp .csproj của ứng dụng.

    <PropertyGroup>
      <ServerGarbageCollection>true</ServerGarbageCollection>
    </PropertyGroup>
    
  • Thu thập rác đồng thời: Bạn có thể bật tính năng thu gom rác đồng thời để cung cấp cho .NET GC một luồng chuyên dụng cho việc thu thập rác ở thế hệ 2. Chế độ cài đặt này có thể hữu ích khi xử lý các báo cáo có kích thước lớn. Bạn có thể bật tính năng thu thập rác đồng thời bằng cách thêm các dòng sau vào tệp .csproj của ứng dụng.

    <PropertyGroup>
      <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
    </PropertyGroup>
    
  • Lưu lại hoạt động thu gom rác của máy ảo: Chế độ cài đặt RetainVMGarbageCollection định cấu hình xem các phân đoạn của bộ nhớ ảo cần xoá được đưa vào danh sách chờ để sử dụng sau này hay được đưa trở lại hệ điều hành (OS). Bạn có thể bật tính năng giữ lại bộ nhớ ảo bằng cách thêm các dòng sau vào ứng dụng của mình.

    <PropertyGroup>
      <RetainVMGarbageCollection>true</RetainVMGarbageCollection>
    </PropertyGroup>
    

Bạn có thể tinh chỉnh GC bằng cách giải quyết chế độ thiết lập giữa máy trạm và máy chủ. Tất cả chế độ cài đặt liên quan đều được chỉ định trong tệp runtimeconfig.json của ứng dụng .NET Core, biến môi trường hoặc App.config của ứng dụng SDK .NET.