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. Tuy nhiên, hiệu suất tổng thể phụ thuộc rất nhiều vào cách sử dụng và tích hợp thư viện với ứng dụng.

Hướng dẫn này trình bày các phương pháp tối ưu hoá hiệu suất dành riêng cho ứng dụng .NET và bổ sung cho các phương pháp hay nhất thường á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 phiên 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 vào bộ nhớ đệm các kênh gRPC mà các dịch vụ API sử dụng. Điều này giúp 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ã thông báo truy cập khi có thể. Điều này giúp giảm số lượt đi và về mà thư viện ứng dụng Google Ads .NET phải thực hiện để làm mới mã thông báo truy cập.

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

  • Nếu có mã thông báo truy cập được 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 trong 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ể giảm thêm số lượt đi và về mà thư viện ứng dụng phải thực hiện để làm mới mã thông báo 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 phân trang để tải toàn bộ báo cáo xuống, nhưng GoogleAdsService.SearchStream chỉ gửi một yêu cầu 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 cần thiết để yêu cầu từng trang riêng lẻ của 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 phân trang. Hãy xem phần 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ý thủ công việc làm mới mã thông báo truy cập

Trong một số môi trường nhất định như Hàm trên Google Cloud, 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 riê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ã thông báo 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

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

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

Phân tích ứng dụng của bạn cả về mức sử dụng CPU và bộ nhớ để xác định các nút thắt cổ chai về hiệu suất. Visual Studio cung cấp Công cụ chẩn đoán để giúp lập hồ sơ ứng dụng. Ngoài ra, bạn cũng có thể sử dụng các 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ộ bằng cách sử dụng mô hình không đồng bộ-chờ 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.

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

Bạn có thể sử dụng tham số callSettings để truyền CancellationToken đến 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.V19.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ể

Thư viện Google Ads .NET tắt tính năng ghi nhật ký theo mặc định và sử dụng phương pháp ghi nhật ký từng phần để giúp ứng dụng của bạn hoạt động hiệu quả hơ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 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 mà không ảnh hưởng đến hiệu suất của ứng dụng:

  • Chỉ bật nhật ký tóm tắt.
  • Đặt nhật ký đầy đủ thành 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 và có thể chia sẻ với các kênh hỗ trợ.

Hãy 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 Search

API Google Ads cung cấp hai 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 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ó một số trường hợp bạn nên sử dụng Search.

Hãy xem hướng dẫn về báo cáo phát trực tiếp để tìm hiểu thêm về hai phương thức này.

Sử dụng tuỳ chọn ReadyToRun

.NET Core 3.1 hỗ trợ thêm tính năng biên dịch trước tệp nhị phâ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 các điểm nóng và cải thiện hiệu suất. Tính năng biên dịch theo tầng 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 sẵn khi có. Hãy xem hướng dẫn về TieredCompilation để tìm hiểu thêm.

Điều chỉnh thu gom rác (GC)

.NET cung cấp hai hồ sơ chung cho việc thu gom rác (GC): hồ sơ máy trạm và hồ sơ máy chủ. Hai hồ sơ này có các điểm đánh đổi về hiệu suất khác nhau. Các ứng dụng sử dụng thư viện Google Ads .NET có xu hướ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.

  • Thu gom rác máy chủ: Tính năng thu gom rác máy chủ cho phép môi trường 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 gom rác 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 gom 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 GC .NET một luồng chuyên dụng cho việc thu gom rác trong 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 gom 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 tính năng thu gom rác của máy ảo: Chế độ cài đặt RetainVMGarbageCollection sẽ định cấu hình xem các phân đoạn bộ nhớ ảo cần xoá có được đưa vào danh sách chờ để sử dụng trong tương lai hay được trả về hệ điều hành (OS) hay không. 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.

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

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