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, với cấu hình tối thiểu từ phía bạn. Tuy nhiên, 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 .

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

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

GoogleAdsClient đại diện cho một phiên hoạt động của người dùng khi thực hiện lệnh gọi API. Chiến dịch này cung cấp chẳng hạn như:

  • Lưu kênh gRPC vào bộ nhớ đệm mà các dịch vụ API sử dụng. Điều này làm giảm thời gian thiết lập khi tạo API ban đầu cuộc gọi.
  • Sử dụng lại mã truy cập khi có thể. Điều này làm giảm số chuyến đi khứ hồi mà thư viện ứng dụng Google Ads .NET 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 cấp mã truy cập ở 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 tài khoản đó thứ bậc. Khi kết hợp với việc sử dụng lại các thực thể GoogleAdsClient, thao tác này có thể giảm hơn nữa số chuyến đi khứ hồi 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ì Tìm kiếm bất cứ khi nào có thể

Trong khi GoogleAdsService.Search có thể gửi nhiều yêu cầu được phân trang để tải xuống toàn bộ báo cáo, GoogleAdsService.SearchStream 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ể kích thước báo cáo. Bằng cách loại bỏ thời gian mạng khứ hồi yêu cầu từng trang riêng lẻ của phản hồi Search, tùy 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 phân trang. Xem Chiến dịch Tìm kiếm so với SearchStream để tìm hiểu tìm hiểu thêm về cách 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 như Google Cloud Các hàm, có thể không khả thi sử dụng lại Thực thể GoogleAdsClient. Những môi trường như vậy có thể mang đến những lợi ích tốt nhất để 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 GoogleAdsConfig để làm mới mã truy cập của riêng bạn 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 Bản phát hành cấu hình khi triển khai cho máy chủ. Khi sử dụng cấu hình Gỡ lỗi, ứng dụng của bạn biên dịch với thông tin gỡ lỗi tượng trưng đầy đủ và khô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 cho cả mức sử dụng CPU và bộ nhớ để xác định hiệu suất điểm tắc nghẽn. Visual Studio cung cấp Công cụ chẩn đoán để giúp lập hồ sơ cho ứng dụng của bạn. Ngoài ra còn có các lập hồ sơ thương mại khác công cụ hiện có.

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

Lập trình không đồng bộ bằng lệnh async-await mô hình giúp tránh điểm tắc nghẽn hiệu suất và tăng cường khả năng phản hồi tổng thể của ứng dụng của bạn. 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 pháp RPC.

Huỷ các phương thức không đồng bộ

Bạn có thể sử dụng tham số callSettings để truyền một CancellationToken vào các phương thức không đồng bộ:

CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);

string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
    CustomerId = customerId.ToString(),
    Query = query,
};

GoogleAdsServiceClient googleAdsService = client.GetService(
    Services.V17.GoogleAdsService);

googleAdsService.SearchStream(request,
    delegate (SearchGoogleAdsStreamResponse resp)
    {
        foreach (GoogleAdsRow googleAdsRow in resp.Results)
        {
            // Process the row.
        }
    }, callSettings
);

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 tính năng 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 công khai. Nếu bạn cần giám sát đối với một số yêu cầu không thành công cụ thể trong phiên bản chính thức, bạn có thể thực hiện một hoặc nhiều sau đây mà không ảnh hưởng xấu đế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 quan tâm cụ thể 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 xem nên sử dụng phương thức SearchStream hay Search

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

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

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

Sử dụng tuỳ chọn ReadyToRun

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

Sử dụng TieredCompilation

TieredCompilation cho phép .NET xác định các điểm phát sóng và cải thiện điểm phát sóng hiệu suất. Tính năng biên dịch theo cấp hoạt động hiệu quả hơn với lựa chọn ReadyToRun vì khung đó có thể sử dụng hình ảnh được tạo trước (nếu có). Xem hướng dẫn về TieredCompilation để tìm hiểu thêm.

Tinh chỉnh hệ thống thu gom rác (GC)

.NET cung cấp hai hồ sơ chung cho việc thu thập rác (GC): một máy trạm và một hồ sơ máy chủ. Hai cấu hình này có hiệu suất khác nhau đánh đổi. Các ứng dụng sử dụng thư viện Google Ads .NET thường hoạt động hiệu quả 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 của máy chủ: Thu thập rác của máy chủ cho phép .NET thời gian chạy để mang lại hiệu suất tốt hơn cho ứng dụng API Google Ads bằng cách thao tác trên nhiều luồng. Xem bài viết này hướng dẫn để biết thêm chi tiết. Bạn có thể bật tính năng thu thập rác trên 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 chế độ đồng thời thu gom rác để cung cấp cho .NET GC một luồng chuyên dụng để thu gom rác vào thế hệ 2. Chế độ cài đặt này có thể hữu ích khi xử lý 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>
    
  • Giữ lại bộ sưu tập rác của máy ảo: RetainVMGarbageCollection cài đặt định cấu hình xem có đặt các phân đoạn của bộ nhớ ảo cần xoá hay không trên danh sách chờ để sử dụng sau này hoặc được đưa trở lại hệ điều hành hệ thống (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 thiết lập trong khoảng máy trạm và máy chủ. Tất cả thông tin có liên quan cài đặt được chỉ định trong tệp runtimeconfig.json của ứng dụng .NET Core, một môi trường hoặc App.config của ứng dụng .NET SDK của bạn.