সর্বোত্তম অনুশীলন এবং সীমাবদ্ধতা

BatchJobService ব্যবহার করার সময় এই নির্দেশিকাগুলি বিবেচনা করুন।

থ্রুপুট উন্নত করুন

  • অনেক ছোট চাকরির চেয়ে কম বড় চাকরি পছন্দ করা হয়।

  • আপলোড করা ক্রিয়াকলাপগুলিকে অপারেশনের ধরণ অনুসারে সাজান। উদাহরণস্বরূপ, যদি আপনার কাজে প্রচারণা, বিজ্ঞাপন গোষ্ঠী এবং বিজ্ঞাপন গোষ্ঠীর মানদণ্ড যোগ করার জন্য ক্রিয়াকলাপ থাকে, তাহলে আপনার আপলোডে ক্রিয়াকলাপগুলিকে এমনভাবে সাজান যাতে সমস্ত প্রচারণা ক্রিয়াকলাপ প্রথমে থাকে, তারপরে সমস্ত বিজ্ঞাপন গোষ্ঠীর ক্রিয়াকলাপ এবং অবশেষে সমস্ত বিজ্ঞাপন গোষ্ঠীর মানদণ্ড ক্রিয়াকলাপ

  • একই ধরণের ক্রিয়াকলাপের মধ্যে, মূল সংস্থান অনুসারে তাদের গোষ্ঠীবদ্ধ করার মাধ্যমে কর্মক্ষমতা উন্নত করা যেতে পারে। উদাহরণস্বরূপ, যদি আপনার কাছে AdGroupCriterionOperation অবজেক্টের একটি সিরিজ থাকে, তাহলে বিভিন্ন বিজ্ঞাপন গোষ্ঠীতে বিজ্ঞাপন গোষ্ঠীর মানদণ্ডকে প্রভাবিত করে এমন ক্রিয়াকলাপগুলিকে একত্রিত করার পরিবর্তে, বিজ্ঞাপন গোষ্ঠী অনুসারে ক্রিয়াকলাপগুলিকে গোষ্ঠীবদ্ধ করা আরও দক্ষ হতে পারে।

সমান্তরাল সমস্যা এড়িয়ে চলুন

  • একই অ্যাকাউন্টের জন্য একাধিক সমসাময়িক কাজ জমা দেওয়ার সময়, একই সময়ে একই বস্তুতে কাজ করার সম্ভাবনা কমানোর চেষ্টা করুন, একই সাথে বড় কাজের আকার বজায় রাখুন। অনেক অসমাপ্ত কাজ, যাদের RUNNING অবস্থা রয়েছে, তারা একই বস্তুর সেট পরিবর্তন করার চেষ্টা করে, যা অচলাবস্থার মতো পরিস্থিতির সৃষ্টি করতে পারে যার ফলে গুরুতর ধীরগতি এবং এমনকি কাজ ব্যর্থ হতে পারে।

  • একই কাজে একই বস্তুকে পরিবর্তন করে এমন একাধিক অপারেশন জমা দেবেন না, কারণ ফলাফল অপ্রত্যাশিত হতে পারে।

সর্বোত্তমভাবে ফলাফল পুনরুদ্ধার করুন

  • চাকরির অবস্থা খুব বেশি ঘন ঘন পোল করবেন না, নাহলে হার সীমার ত্রুটির ঝুঁকিতে পড়বেন।

  • প্রতি পৃষ্ঠায় ১,০০০ এর বেশি ফলাফল পাবেন না। লোড বা অন্যান্য কারণে সার্ভার এর চেয়ে কম ফলাফল পেতে পারে।

  • ফলাফলের ক্রম আপলোডের ক্রম অনুসারেই হবে।

অতিরিক্ত ব্যবহারের নির্দেশিকা

  • একটি ব্যাচ জব বাতিল করার আগে কতক্ষণ চালানো যাবে তার জন্য আপনি একটি উচ্চতর সীমা নির্ধারণ করতে পারেন। একটি নতুন ব্যাচ জব তৈরি করার সময়, metadata.execution_limit_seconds ক্ষেত্রটি আপনার পছন্দের সময়সীমাতে সেকেন্ডে সেট করুন। metadata.execution_limit_seconds সেট না থাকলে কোনও ডিফল্ট সময়সীমা নেই।

  • প্রতি AddBatchJobOperationsRequest এ ১,০০০-এর বেশি অপারেশন যোগ না করার এবং একই কাজে বাকি অপারেশন আপলোড করার জন্য sequence_token ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। অপারেশনের বিষয়বস্তুর উপর নির্ভর করে, একটি AddBatchJobOperationsRequest এ অনেকগুলি অপারেশনের ফলে REQUEST_TOO_LARGE ত্রুটি হতে পারে। আপনি অপারেশনের সংখ্যা কমিয়ে এবং AddBatchJobOperationsRequest পুনরায় চেষ্টা করে এই ত্রুটিটি মোকাবেলা করতে পারেন।

সীমাবদ্ধতা

  • প্রতিটি BatchJob দশ লক্ষ পর্যন্ত অপারেশন সমর্থন করে।

  • প্রতিটি অ্যাকাউন্টে একই সময়ে সর্বাধিক ১০০টি সক্রিয় বা মুলতুবি কাজ থাকতে পারে।

  • ৭ দিনের বেশি পুরনো মুলতুবি থাকা কাজগুলি স্বয়ংক্রিয়ভাবে সরানো হবে।

  • v22 অনুসারে, প্রতিটি AddBatchJobOperations অনুরোধের প্রতি অনুরোধে 10,000টি মিউটেট অপারেশনের সীমা রয়েছে।

  • v22 অনুসারে, ListBatchJobResultsRequestpage_size ক্ষেত্রের জন্য:

    • যদি page_size সেট না করা থাকে অথবা 0 হয়, তাহলে এটি ডিফল্টভাবে সর্বোচ্চ 1,000 এ সেট করা থাকে।
    • যদি page_size ১,০০০ এর বেশি হয়, অথবা ০ এর কম হয়, তাহলে API একটি INVALID_PAGE_SIZE ত্রুটি প্রদান করে।
  • প্রতিটি AddBatchJobOperationsRequest এর সর্বোচ্চ আকার ১০,৪৮৪,৫০৪ বাইট। যদি আপনি এটি অতিক্রম করেন, তাহলে আপনি একটি INTERNAL_ERROR পাবেন। জমা দেওয়ার আগে আপনি অনুরোধের আকার নির্ধারণ করতে পারেন এবং যদি এটি খুব বড় হয় তবে যথাযথ ব্যবস্থা নিতে পারেন।

    জাভা

    
    static final int MAX_REQUEST_BYTES = 10_484_504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.getSerializedSize();
    

    পাইথন

    
    from google.ads.googleads.client import GoogleAdsClient
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request._pb.ByteSize()
    

    রুবি

    
    require 'google/ads/google_ads'
    
    MAX_REQUEST_BYTES = 10484504
    
    ... (code to get the request object)
    
    size_in_bytes = request.to_proto.bytesize
    

    পিএইচপি

    
    use Google\Ads\GoogleAds\V16\Resources\Campaign;
    
    const MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    $size_in_bytes = $campaign->byteSize() . PHP_EOL;
    

    .নেট

    
    using Google.Protobuf;
    const int MAX_REQUEST_BYTES = 10484504;
    
    ... (code to get the request object)
    
    int sizeInBytes = request.ToByteArray().Length;
    

    পার্ল

    
    use Devel::Size qw(total_size);
    use constant MAX_REQUEST_BYTES => 10484504;
    
    ... (code to get the request object)
    
    my $size_in_bytes = total_size($request);