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

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

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

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

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

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

একযোগে সমস্যা এড়িয়ে চলুন

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

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

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

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

  • প্রতি পৃষ্ঠায় 1,000টির বেশি ফলাফল পুনরুদ্ধার করবেন না। লোড বা অন্যান্য কারণের কারণে সার্ভার তার চেয়ে কম ফেরত দিতে পারে।

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

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

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

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

সীমাবদ্ধতা

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

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

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

  • প্রতিটি AddBatchJobOperationsRequest এর সর্বোচ্চ আকার 10,484,504 বাইট। আপনি এটি অতিক্রম করলে, আপনি একটি 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);
    
,

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

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

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

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

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

একযোগে সমস্যা এড়িয়ে চলুন

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

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

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

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

  • প্রতি পৃষ্ঠায় 1,000টির বেশি ফলাফল পুনরুদ্ধার করবেন না। লোড বা অন্যান্য কারণের কারণে সার্ভার তার চেয়ে কম ফেরত দিতে পারে।

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

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

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

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

সীমাবদ্ধতা

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

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

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

  • প্রতিটি AddBatchJobOperationsRequest এর সর্বোচ্চ আকার 10,484,504 বাইট। আপনি এটি অতিক্রম করলে, আপনি একটি 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);