Module 7 · Chapter 1 of 8
Debugging header bidding
Current chapter: Welcome, outcomes and key terms
You finished Debugging header bidding.
Lock it in with the 8-question quiz. Instant results, retake any time.
0:00Welcome, outcomes and key terms
Play from 0:00 गुरुवार है, lunch के थोड़ी देर बाद। Sales एक advertiser का screenshot forward करती है: आपके article pages पर half-page slot blank है।
Play from 0:19 और आपका yield lead पूछता है कि इस हफ़्ते वहाँ Prebid revenue एक तिहाई क्यों गिर गया। ये illustrative नंबर हैं।
Play from 0:28 कोई timeout बढ़ाना चाहता है। ये module आपको इससे बेहतर तरीका देता है: एक routine जिसे आप हर बार एक ही तरह चलाते हैं, उन tools के साथ जो पहले से आपके browser में हैं।
Play from 0:32 RediAds Academy की Header Bidding Masterclass के Module सात में आपका स्वागत है: header bidding की debugging।
Play from 0:38 इस module के आख़िर तक आप चार चीज़ें कर पाएँगे।
Play from 0:42 pbjs_debug, console और Publisher Console से ये देखना कि एक page view पर असल में क्या हुआ।
Play from 0:49 छह steps का एक debug routine चलाना, जो बताता है कि कौन सी layer टूटी है।
Play from 0:54 Prebid के Debugging module से अपने ही page पर नकली bids, no-bids और धीमे bidders बनाना।
Play from 1:01 और चार आम cases हल करना: bids जो कभी नहीं जीततीं, timeout storm, price bucket mismatch और blank ad।
Play from 1:10 पहले आठ terms।
Play from 1:11 pbjs_debug एक URL parameter है, जिससे Prebid console में अपना हर काम समझाता है। Debugging module, Prebid का एक module है जो असली bids की जगह आपकी तय की हुई test bids डाल देता है। Intercept rule कहता है: जब request ऐसी दिखे, तो ऐसा जवाब दो। Event log, page पर हर auction के हर step का Prebid का अपना record है।
Play from 1:34 Publisher Console, Google का on-page view है कि Ad Manager ने हर slot के साथ क्या किया। No-bid का मतलब है bidder ने समय पर जवाब दिया, लेकिन देने को कुछ नहीं था। Late bid एक असली bid है जो Prebid के इंतज़ार ख़त्म करने के बाद आई। और render failure एक जीतने वाली bid है जो कभी दिखी ही नहीं।
Play from 1:56 Module एक से छह ने auction बनाया: browser में, Prebid Server पर और Ad Manager में। Module सात ये ढूँढने के बारे में है कि ये कहाँ टूटता है। Module आठ उन नंबरों से निपटता है जो दूसरी तरफ़ से निकलते हैं।
2:13Your debugging toolkit
Play from 2:14 Chapter एक। कोई भी report खोलने से पहले page खोलिए। Report बताती है कि कुछ बदला है। क्यों बदला, ये सिर्फ़ page बताता है।
Play from 2:24 Reports लाखों page views का average होती हैं। Bug आमतौर पर एक खास situation में रहता है: एक template, एक slot, एक device।
Play from 2:33 तो आपका पहला काम है एक page load करना, उन्हीं हालात में जिनमें उस reader ने problem देखी।
Play from 2:40 वही page template। वही device type, तो mobile के लिए अपने browser का device mode इस्तेमाल कीजिए। वही consent choice। और इस site के लिए आपका ad blocker बंद।
Play from 2:51 फिर आप एक auction को शुरू से आख़िर तक देखते हैं। इस module में सब कुछ यहीं से शुरू होता है।
Play from 2:57 एक छोटे बदलाव से शुरू कीजिए। Page के address के आख़िर में pbjs_debug equals true जोड़िए, और reload कीजिए।
Play from 3:05 अब अपने developer tools में console खोलिए। Prebid जो कर रहा है वो step-by-step print करता है: auction का शुरू होना, requests का जाना, bids और no-bids का वापस आना।
Play from 3:17 Debug mode में Prebid JavaScript errors छिपाना भी बंद कर देता है, तो चुपचाप होने वाली problems दिखने लगती हैं।
Play from 3:24 ये सिर्फ़ आपका view बदलता है, आपके readers का नहीं। और इन messages के शब्द versions के साथ बदलते रहते हैं, तो इन्हें मतलब के लिए पढ़िए।
Play from 3:33 Page load होने के बाद आप Prebid से सीधे सवाल पूछ सकते हैं। सात commands ज़्यादातर सवालों का जवाब देती हैं।
Play from 3:41 pbjs dot version बताता है कि page पर कौन सा Prebid build है। pbjs dot adUnits, ad units की list देता है, उनके sizes और bidders के साथ।
Play from 3:53 getBidResponses मिली हुई हर bid दिखाता है, हारने वाली भी। getNoBids दिखाता है कि किन bidders ने ख़ाली जवाब दिया।
Play from 4:00 getAdserverTargeting वो key-values दिखाता है जो Prebid, Ad Manager को भेजना चाहता है। getConfig live settings दिखाता है, जैसे timeout और price granularity।
Play from 4:10 और getEvents, event log लौटाता है। उसके लिए एक अलग slide बनती है।
Play from 4:17 pbjs dot getEvents हर auction की कहानी order में बताता है। Illustrative timings।
Play from 4:23 auctionInit: auction शुरू होता है। bidRequested: हर bidder को एक request जाती है। bidResponse या noBid: हर bidder जवाब देता है। auctionEnd और setTargeting: Prebid इंतज़ार बंद करता है, अपनी सबसे अच्छी bids चुनता है और key-values लिखता है। bidWon और adRenderSucceeded: एक Prebid bid, Ad Manager में जीती और दिखी।
Play from 4:45 दो और events सीधे गड़बड़ की तरफ़ इशारा करते हैं। bidTimeout या auctionTimeout का मतलब है कि समय ख़त्म होने पर भी किसी का इंतज़ार हो रहा था। और adRenderFailed का मतलब है कि एक जीतने वाली bid दिखी नहीं।
Play from 4:54 जब कुछ गलत हो, तो वो step ढूँढिए जो गायब है।
Play from 5:04 Console बताता है कि Prebid के हिसाब से क्या हुआ। Network tab बताता है कि browser से असल में क्या निकला।
Play from 5:11 List को एक bidder के domain से filter कीजिए, और आपको हर bid request, उसका status और उसमें लगा समय दिखेगा। Illustrative timings।
Play from 5:20 जिस request में आपके timeout से ज़्यादा समय लगा, वो ऐसी bid है जिसे कभी मौका ही नहीं मिला, उसकी price चाहे कितनी भी अच्छी हो।
Play from 5:28 फिर उस ad request के लिए filter कीजिए जो GPT, Ad Manager को भेजता है। अगर वो आपके bidders के जवाब से पहले निकल जाती है, तो आपको ordering की problem मिल गई।
Play from 5:36 Key-values भी उसी ad request के अंदर जाती हैं, लेकिन उन्हें पढ़ने का एक आसान तरीका है।
Play from 5:45 Google का Publisher Console, ad server की तरफ़ की कहानी सीधे page पर दिखाता है।
Play from 5:50 इसे खोलने के लिए page के address में google underscore console equals one जोड़िए, या console में googletag dot openConsole type कीजिए।
Play from 6:00 Ad Slots tab में हर slot का एक card है: उसका ad unit path, उसकी div ID, और वो key-value targeting जो GPT ने उसके लिए भेजी।
Play from 6:10 जब कोई reservation line item serve होता है, तो card में line item ID और creative ID भी दिखती है। इससे पता चलता है कि Prebid line item जीता या नहीं।
Play from 6:19 Page Request tab में हर slot की timeline है, बनने से लेकर render तक, किसी भी warning के साथ।
Play from 6:27 अगर आप commands type नहीं करना चाहते, तो Prebid.org एक free Chrome extension देता है, जिसका नाम है Professor Prebid।
Play from 6:36 ये page पर Prebid पहचानता है और हर ad unit की list देता है, उसके bidders, उनकी bids और winner के साथ।
Play from 6:44 इसकी timeline हर bidder का response time आपके timeout के मुकाबले दिखाती है।
Play from 6:49 और ये आपका config दिखाता है: price granularity, consent और identity modules।
Play from 6:56 Extensions हमारी recordings में नहीं दिखते, इसलिए हम console इस्तेमाल करेंगे। वो भी यही सवालों के जवाब देता है।
Play from 7:03 ये page जानबूझकर healthy है। पहले आपको पता होना चाहिए कि normal दिखता कैसा है।
Play from 7:25 Debug log पहले से चल रहा है। इसे auction के लिए filter कीजिए, और आप उसे शुरू और ख़त्म होते देख सकते हैं। इससे हमें बस इतना ही चाहिए।
Play from 7:36 अब console। पहले pbjs dot version, ताकि पता चले हम किस build पर हैं। फिर live timeout: एक हज़ार milliseconds। और price granularity: medium। ये वो values हैं जो page सच में इस्तेमाल करता है, वो नहीं जो किसी को set करना याद है।
Play from 7:42 अगला, पहला असली check। Prebid का ad unit code div-mpu है। और GPT slot, div-mpu नाम की एक div में है। दोनों match करते हैं, तो Prebid के पास अपनी bids लगाने के लिए एक slot है।
Play from 7:47 ये रहीं bids, हर bidder की price और response time के साथ। चार bidders, सब timeout के काफ़ी अंदर। Test bids milliseconds में जवाब देती हैं। असली bids को सैकड़ों milliseconds लगते हैं।
Play from 8:01 अब सबसे काम का check। Prebid से ये पूछने की बजाय कि वो क्या भेजना चाहता है, हम GPT slot से पूछते हैं कि वो असल में क्या लिए हुए है। hb_pb दो point शून्य शून्य है। यानी key-values, ad request निकलने से पहले slot तक पहुँच गईं।
Play from 8:15 Event log order confirm करता है: init, requests, responses, auction end, फिर targeting।
Play from 8:21 और आख़िर में, Publisher Console यही slot Ad Manager की तरफ़ से दिखाता है, उसकी targeting और timeline के साथ।
Play from 8:28 ये है healthy baseline। अगले chapters में हम इस page को जानबूझकर तोड़ेंगे।
Play from 8:35 इन tools के साथ हम तीन गलतियाँ देखते हैं।
Play from 8:38 ऐसे browser में debug करना जो आपके readers जैसा नहीं है। Ad blocker, logged-in subscriber account या decline किया हुआ consent banner, इनमें से हर एक auction को पूरी तरह बदल सकता है।
Play from 8:50 सिर्फ़ पहला auction check करना। जो pages refresh करते हैं या slots lazy-load करते हैं, वो बाद में और auctions चलाते हैं। Event log उन्हें भी cover करता है।
Play from 9:00 और एक page view को पूरा सच मान लेना। Browser आपको mechanism दिखाता है। ये कितनी बार होता है, ये check करना Module आठ दिखाता है।
9:09A six-step routine
Play from 9:09 Chapter दो। आपके पास tools हैं। अब उन्हें इस्तेमाल करने के लिए एक order चाहिए।
Play from 9:16 जब कोई slot टूटता है, तो मन करता है कि तुरंत कुछ बदल दें। Timeout बढ़ा दें। कोई bidder हटा दें।
Play from 9:23 हर बदलाव मदद कर सकता है, या असली गड़बड़ को छिपा सकता है। एक साथ दो चीज़ें बदलिए, और आपको कभी पता नहीं चलेगा कि किसने काम किया।
Play from 9:32 Routine इसे ठीक करता है। आप वही सवाल उसी order में पूछते हैं, और पहला "नहीं" बता देता है कि कौन सी layer टूटी है।
Play from 9:41 इससे काम share भी हो पाता है। Teammate ठीक देख सकता है कि आप कहाँ रुके।
Play from 9:48 ये रहा routine। छह steps, order में।
Play from 9:51 एक: reproduce और scope। दो: क्या auction चला? तीन: क्या bids समय पर वापस आईं? चार: क्या targeting ad server तक पहुँची? पाँच: क्या कोई line item match होकर जीता? छह: क्या वो render हुआ?
Play from 10:05 Steps दो से छह, bid को page से screen तक follow करते हैं। हर step पिछले वाले पर निर्भर है, तो अगर targeting कभी पहुँची ही नहीं, तो line items check करने का कोई मतलब नहीं।
Play from 10:18 Step एक सवाल के बारे में है, code के बारे में नहीं। पाँच चीज़ें लिखिए।
Play from 10:22 कहाँ: कौन सा page template, कौन सा slot। किसके लिए: कौन सा device, browser, country और consent state। कब से: वो पहला दिन जब नंबर हिले। कितना: सारा traffic या एक हिस्सा। और उस तारीख़ के आस-पास क्या बदला: कोई deployment, नया bidder, line item upload, या Prebid upgrade।
Play from 10:43 फिर इसे एक बार अपने browser में reproduce कीजिए, pbjs_debug on करके। अगर न हो पाए, तो scope छोटा कीजिए। ज़्यादातर "random" problems आख़िर में एक template या एक device type निकलती हैं।
Play from 10:58 Step दो। क्या Prebid ने इस slot के लिए auction चलाया भी?
Play from 11:01 pbjs dot adUnits check कीजिए। क्या slot वहाँ है, सही sizes और bidders के साथ?
Play from 11:08 फिर उसके code की तुलना GPT slot से कीजिए। जब Prebid, GPT के लिए targeting set करता है, तो वो हर ad unit code को slot के ad unit path से match करता है, और वो न मिले तो slot की div ID से।
Play from 11:22 अगर दोनों में से कुछ match नहीं होता, तो auction बिलकुल ठीक चल सकता है और bids असली हो सकती हैं, लेकिन उन्हें लगाने के लिए कोई slot नहीं होता।
Play from 11:31 और check कीजिए कि event log में इस page view का auctionInit है। अगर नहीं है, तो Prebid ख़ुद load नहीं हुआ, या बहुत देर से हुआ।
Play from 11:41 Step तीन। क्या किसी bidder ने जवाब दिया, और समय पर?
Play from 11:44 getBidResponses असली bids और उनका timeToRespond दिखाता है। इसकी तुलना getConfig से मिले live timeout से कीजिए।
Play from 11:53 getNoBids वो bidders दिखाता है जिन्होंने ख़ाली जवाब दिया। ये demand का सवाल है, आपके page का bug नहीं।
Play from 12:00 Timeout event का मतलब है कि timer ख़त्म होने पर भी कम से कम एक bidder का इंतज़ार हो रहा था।
Play from 12:06 और bidRejected event का मतलब है कि bid आई, लेकिन Prebid ने उसे मना कर दिया, जैसे इसलिए कि वो floor से नीचे थी। तीन अलग नतीजे। इन्हें अलग रखिए।
Play from 12:19 Step चार। क्या key-values, Ad Manager तक पहुँचीं?
Play from 12:23 getAdserverTargeting पर मत रुकिए। ये बताता है कि अगर आप अभी पूछें तो Prebid क्या भेजेगा। Auction के बाद आई late bids भी वहाँ दिख सकती हैं।
Play from 12:32 इसकी बजाय GPT slot से पूछिए कि वो असल में क्या लिए हुए है। googletag dot pubads dot getSlots से slot लीजिए, फिर targeting शब्द के साथ getConfig call कीजिए।
Play from 12:43 या Publisher Console खोलिए, और slot के card पर targeting पढ़िए।
Play from 12:48 अगर hb keys गायब हैं, तो GPT ने ad बहुत जल्दी माँग लिया, या step दो में codes match नहीं हुए।
Play from 12:56 Step पाँच। Key-values पहुँच गईं। क्या किसी Prebid line item ने उन्हें match किया, और जीता?
Play from 13:03 Slot पर hb_pb पढ़िए, एक-एक character। फिर उसकी तुलना अपने Prebid line items की targeting से कीजिए। Ad Manager key-values को text की तरह match करता है, तो एक point आठ शून्य और एक point आठ, दो अलग values हैं।
Play from 13:19 Check कीजिए कि order और line item active हैं, और इस size और इस bucket को cover करते हैं।
Play from 13:25 फिर Publisher Console देखिए। अगर उसमें ऐसी line item ID है जो आपके Prebid line items में से नहीं है, तो कुछ और जीता है। ये auction का ठीक काम करना है, bug नहीं।
Play from 13:36 Step छह। Prebid line item जीत गया। क्या ad असल में दिखा?
Play from 13:40 Event log में bidWon और उसके बाद adRenderSucceeded ढूँढिए।
Play from 13:45 अगर उसकी जगह adRenderFailed दिखे, तो उसका reason field बताता है कि कौन सा हिस्सा fail हुआ।
Play from 13:51 और GPT का अपना event है, slotRenderEnded। उसका isEmpty flag बताता है कि Ad Manager ने कोई ad लौटाया भी या नहीं, और lineItemId बताता है कि कौन सा reservation line item serve हुआ।
Play from 13:59 इस module के आख़िर में blank ad वाले case में हम दोनों इस्तेमाल करेंगे।
Play from 14:09 जब कोई step fail होता है, तो आपको layer मिल गई। अब loop ठीक से बंद कीजिए।
Play from 14:14 एक बदलाव कीजिए। सिर्फ़ एक।
Play from 14:16 उसे page पर verify कीजिए, उन्हीं steps से जिनसे problem मिली थी।
Play from 14:20 फिर उसे एक छोटे debug log में लिखिए: symptom, scope, कौन सा step fail हुआ, सबूत, fix, और जिस तारीख़ को आपने verify किया।
Play from 14:30 जब छह महीने बाद वही symptom लौटेगा, तो वो log एक पूरी दोपहर को पाँच मिनट में बदल देगा।
Play from 14:37 Routine के साथ हम तीन गलतियाँ देखते हैं।
Play from 14:40 Step एक छोड़ देना। Scope के बिना आप laptop पर homepage test करते रहते हैं, जबकि bug mobile पर article pages में है।
Play from 14:49 Step पाँच से शुरू करना, क्योंकि "हमेशा line items ही होते हैं"। कभी-कभी होते हैं। फिर भी steps दो से चार चलाइए। इनमें दो मिनट लगते हैं।
Play from 14:58 और staging पर test करना, जबकि staging पर अलग Prebid build चल रहा है। दोनों पर pbjs dot version की तुलना कीजिए।
15:07Case: bids but never win
Play from 15:08 Chapter तीन। चलिए routine को एक असली जैसे case पर चलाते हैं। ये वो शिकायत है जो हम सबसे ज़्यादा सुनते हैं: Prebid bid कर रहा है, लेकिन कभी जीतता नहीं।
Play from 15:20 ये रहा case। Illustrative नंबर।
Play from 15:22 आपका analytics article page के half-page slot पर अच्छी bids दिखाता है: चार bidders, average bid लगभग एक डॉलर नब्बे सेंट।
Play from 15:31 Ad Manager में उस slot के Prebid line items पर मंगलवार से शून्य impressions हैं।
Play from 15:37 आपके homepage slots, उसी Prebid set-up पर, ठीक हैं।
Play from 15:42 Step एक: scope। सिर्फ़ article pages, सारे devices, मंगलवार से। और मंगलवार को article template का redesign हुआ था।
Play from 15:50 Step दो: क्या auction चला? pbjs dot adUnits में slot दिखता है, code div-hp-article के साथ।
Play from 15:58 अब GPT slot। getSlots दिखाता है कि उसकी div ID div-halfpage-article है।
Play from 16:04 Redesign ने div का नाम बदल दिया। Prebid configuration को किसी ने नहीं बताया। Ad unit code न slot के ad unit path से match करता है, न उसकी div ID से।
Play from 16:16 दो छोटी commands इसे confirm करती हैं।
Play from 16:18 getAdserverTargeting में hb keys का पूरा set है, div-hp-article के नाम पर।
Play from 16:25 लेकिन GPT slot की अपनी targeting में कोई hb key है ही नहीं।
Play from 16:29 Auction बिलकुल ठीक है। Bids असली हैं। बस उन पर ऐसे slot का पता लिखा है जो अब इस page पर है ही नहीं। Timeout बढ़ाने या bidders जोड़ने से कुछ नहीं बदलता।
Play from 16:42 Fix एक line का है: Prebid का ad unit code नई div ID से match करने के लिए बदलिए।
Play from 16:48 फिर उन्हीं steps से verify कीजिए। Codes match करते हैं। Slot अब hb_pb लिए हुए है। Publisher Console में कभी-कभी एक Prebid line item जीतता दिखता है।
Play from 17:00 और बचाव: अपने release process में एक check जोड़िए। Ad slots को छूने वाला कोई भी template बदलाव, ship होने से पहले दो मिनट के pbjs_debug check से गुज़रे।
Play from 17:11 Step दो, दो commands, case closed।
Play from 17:15 Ad unit codes के साथ हम तीन गलतियाँ देखते हैं।
Play from 17:18 Redesign में slot divs का नाम बदलना, Prebid configuration को छुए बिना।
Play from 17:23 Lazy-loaded slot को तब define करना, जब Prebid अपनी targeting पहले ही set कर चुका हो। उस समय match करने के लिए कोई slot था ही नहीं।
Play from 17:32 और किसी दूसरी site या template से ad unit settings copy करना, codes समेत।
Play from 17:40 एक problem बाकी है। Fix को staging page पर कैसे test करें, जहाँ असली bidders मुश्किल से ही bid करते हैं? Prebid के Debugging module से।
Play from 17:49 इससे आप अपने ही page पर असली bids की जगह अपनी तय की हुई test bids डाल सकते हैं।
Play from 17:56 Intercept हुई requests कभी असली bidder तक नहीं पहुँचतीं। Prebid ख़ुद उनका जवाब देता है, जो भी आपने माँगा हो।
Play from 18:03 तो आप जब चाहें problem reproduce कर सकते हैं। एक bidder जो कभी bid नहीं करता। एक bidder जो हमेशा late होता है। ठीक एक डॉलर तिरासी सेंट की एक bid।
Play from 18:10 यानी आप fix को ship करने से पहले test कर सकते हैं, bug के दोबारा होने का इंतज़ार किए बिना।
Play from 18:19 इसे आप pbjs dot setConfig से on करते हैं, एक debugging object के साथ जिसमें enabled true हो और intercept rules की एक list हो।
Play from 18:29 हर rule में एक "when" हिस्सा होता है: कौन सी requests पकड़नी हैं, जैसे openx नाम के bidder को जाने वाली हर request।
Play from 18:37 एक "then" हिस्सा: क्या जवाब देना है, जैसे दो डॉलर चालीस सेंट का CPM। "then" को null कर दीजिए, तो जवाब no-bid होता है।
Play from 18:47 और options के अंदर एक optional delay, milliseconds में। धीमा bidder ऐसे ही बनाते हैं।
Play from 18:52 एक चेतावनी। Settings, tab के session storage में save होती हैं, तो reload के बाद भी बनी रहती हैं। काम हो जाए तो debugging बंद कीजिए, या tab बंद कीजिए। वरना आप अपनी ही test bids को debug करते रहेंगे।
Play from 19:08 रुकिए और जवाब दीजिए।
Play from 19:16 Bids समय पर आती हैं, और getAdserverTargeting उस slot के लिए hb_pb दिखाता है। लेकिन GPT slot की अपनी targeting में कोई hb key नहीं है। कौन सा step fail हुआ है, और दो सबसे संभावित वजहें क्या हैं?
Play from 19:24 Step चार: targeting ad server तक नहीं पहुँची। या तो ad unit code slot से match नहीं करता, तो Prebid के पास अपनी keys रखने की कोई जगह नहीं थी। या GPT ने Prebid के keys set करने से पहले ही ad माँग लिया। पहले codes check कीजिए। इसमें बस कुछ seconds लगते हैं।
19:43Case: the timeout storm
Play from 19:43 Chapter चार। एक अलग case, और एक अलग layer: समय।
Play from 19:49 सोमवार सुबह, आपका dashboard कुछ अजीब दिखाता है। Illustrative नंबर।
Play from 19:54 सारे bidders में timeout rate लगभग छह प्रतिशत से उछलकर अड़तीस प्रतिशत हो गया है।
Play from 20:00 Impressions में Prebid का हिस्सा गिर गया है, और हर हज़ार page views पर revenue अठारह प्रतिशत नीचे है।
Play from 20:07 जहाँ तक किसी को पता है, किसी bidder ने कुछ नहीं बदला। तो गड़बड़ bidders में है, या आपके यहाँ?
Play from 20:13 पहले शब्दों को लेकर सटीक रहिए, क्योंकि dashboards अक्सर इन्हें मिला देते हैं।
Play from 20:18 No-bid, समय पर आया जवाब है, जिसमें कुछ नहीं है। ये demand है।
Play from 20:22 Late bid एक असली bid है, जो Prebid के इंतज़ार ख़त्म करने के बाद आई। ये latency है।
Play from 20:28 Rejected bid समय पर आई, लेकिन Prebid ने उसे मना कर दिया, जैसे floor से नीचे होने पर, या ऐसी currency में जिसे वो convert नहीं कर सका। ये configuration है।
Play from 20:38 Timeout storm, late bids में अचानक आई बढ़ोतरी है। आपका fix इस पर निर्भर है कि आप असल में इन तीनों में से किसे देख रहे हैं।
Play from 20:47 Step एक, scope। Timeout storm में सबसे काम का सवाल है: क्या ये हर bidder के साथ है, या सिर्फ़ एक के?
Play from 20:55 अगर एक bidder अचानक धीमा है और बाकी नहीं, तो problem शायद उनकी तरफ़ है। उन्हें सबूत भेजिए।
Play from 21:02 अगर हर bidder एक ही समय पर late है, तो problem लगभग पक्का आपके page पर है। Bidders अपने बुरे दिन मिलकर तय नहीं करते।
Play from 21:09 यहाँ चारों bidders एक ही दिन बिगड़े। तो हम page देखते हैं।
Play from 21:14 अब timeline पढ़िए, Professor Prebid में या अपने browser के Performance panel में। Illustrative timings।
Play from 21:21 Network पर bidders लगभग उतने ही समय में जवाब देते हैं जितना पिछले हफ़्ते: तीन सौ से छह सौ milliseconds।
Play from 21:28 लेकिन इस हफ़्ते, auction शुरू होने के ठीक बाद लगभग नौ सौ milliseconds का एक लंबा task शुरू होता है। जब तक वो चलता है, browser और कुछ नहीं कर सकता।
Play from 21:39 तो जो जवाब समय पर आ गए थे, वो queue में बैठे रहते हैं, और Prebid उन्हें अपना timer ख़त्म होने के बाद handle करता है।
Play from 21:46 और रविवार के release notes में एक नई video player script दिखती है, जो page head में ऊपर जोड़ी गई और तुरंत शुरू हो गई।
Play from 21:55 Timeout storms की आमतौर पर चार में से एक वजह होती है।
Play from 21:59 Auction के दौरान चलती भारी scripts, जिससे browser जवाब process नहीं कर पाता। Fix: Performance panel में लंबा task ढूँढिए, और उस script को page load होने के बाद चलाइए।
Play from 22:12 एक साथ बहुत सारी requests, बहुत से slots पर बहुत से bidders से। Fix: जो bidders कम ही जीतते हैं उन्हें हटाइए, जैसा Module दो में देखा।
Play from 22:22 एक धीमा partner। Fix: सबूत के साथ उनसे बात कीजिए, और server-side connection के बारे में सोचिए, जैसा Modules तीन और चार में देखा।
Play from 22:30 या एक timeout जो mobile के लिए हमेशा से बहुत tight था। Fix: Module दो वाला timeout test, mobile traffic पर चलाइए।
Play from 22:40 Debugging module से हम दोनों problems एक शांत page पर खड़ी कर सकते हैं, ताकि ठीक से देख सकें कि हर एक कैसी दिखती है।
Play from 23:00 पहले एक page जहाँ तीन bidders ना कहते हैं। सिर्फ़ एक bid वापस आती है। और getNoBids बाकी तीनों के नाम बताता है। उन्होंने समय पर जवाब दिया, लेकिन ख़ाली। ये demand है, bug नहीं, और कोई भी timeout setting इसे नहीं बदलेगी।
Play from 23:10 अब timeout storm। वही page, वही एक हज़ार milliseconds का timeout। ये रहीं bids, उनके response times के साथ। openx को देखिए: दो डॉलर चालीस, इस page की सबसे अच्छी price। और उसने लगभग तेरह सौ milliseconds बाद जवाब दिया। Sovrn और ix भी late हैं।
Play from 23:20 Event log दिखाता है कि auction का timeout हुआ, और उसके तुरंत बाद targeting set हुई।
Play from 23:34 तो Ad Manager को असल में क्या मिला? Slot से पूछिए। वो जो winner लिए हुए है, वो है rediads, दो डॉलर पर। अब यही सवाल getAdserverTargeting से पूछिए। वो कहता है openx। जो भेजा गया था वो ये नहीं है। ये वो है जो Prebid अभी auction चलने पर भेजता, late bid समेत। अगर आपने सिर्फ़ ये command check की होती, तो आपको लगता कि सबसे अच्छी bid पहुँच गई।
Play from 23:47 और जब काम हो जाए, तो Debugging module बंद कीजिए, ताकि अगला जो भी ये tab load करे, उसे असली bids दिखें।
Play from 23:55 अपने storm पर वापस चलते हैं।
Play from 23:57 नई video player script को auction के दौरान की बजाय page load होने के बाद शुरू होने के लिए set किया गया। लंबा task auction के window से बाहर चला गया। Illustrative नंबर।
Play from 24:08 एक दिन के अंदर timeout rate अपने आम level पर लौट आया।
Play from 24:12 और इस situation में जो गलती हम सबसे ज़्यादा देखते हैं: पूरी site पर timeout को तीन seconds कर देना। इससे symptom छिप जाता है, हर auction धीमा हो जाता है, और असली वजह page पर बनी रहती है।
24:25Case: the bucket mismatch
Play from 24:26 Chapter पाँच। ये वाला चुपचाप होता है। कुछ blank नहीं, कोई error नहीं, फिर भी पैसा रिसता रहता है।
Play from 24:34 ये रहा case। Illustrative नंबर।
Play from 24:37 Site, Prebid की auto price granularity इस्तेमाल करती है। पाँच डॉलर से नीचे इसका मतलब है पाँच सेंट के buckets।
Play from 24:44 पिछले हफ़्ते team ने एक डॉलर से ढाई डॉलर के बीच के Prebid line items दोबारा बनाए, एक spreadsheet upload से।
Play from 24:53 तब से उस price band में Prebid impressions लगभग आधे रह गए हैं। और कुछ नहीं बदला।
Play from 25:00 Routine चलाइए।
Play from 25:01 Step दो pass होता है। Codes match करते हैं। Step तीन pass होता है। Bids समय पर आती हैं। Step चार pass होता है। Slot पर hb_pb एक point आठ शून्य है।
Play from 25:12 Step पाँच fail होता है। Publisher Console में एक non-Prebid line item जीतता दिखता है, तब भी जब Prebid bid सबसे ऊँची price थी।
Play from 25:22 तो Prebid bid, Ad Manager तक पहुँची, और किसी ने उसे उठाया नहीं।
Play from 25:27 अब एक page view नहीं, pattern देखिए। Prebid line item impressions को hb_pb value के हिसाब से बाँटिए। Illustrative नंबर।
Play from 25:35 एक point सात पाँच: ठीक। एक point आठ शून्य: शून्य। एक point आठ पाँच: ठीक। एक point नौ शून्य: शून्य। दो point शून्य शून्य: शून्य।
Play from 25:47 हर गायब bucket शून्य पर ख़त्म होता है। ये demand का pattern नहीं है। Demand round numbers से नहीं बचती। ये formatting का pattern है।
Play from 25:58 हुआ ये था।
Play from 25:59 Spreadsheet ने price column को numbers की तरह लिया। एक point आठ शून्य बन गया एक point आठ। दो point शून्य शून्य बन गया दो।
Play from 26:08 Prebid हमेशा hb_pb को दो decimal places वाले text की तरह भेजता है।
Play from 26:14 Ad Manager key-values को text की तरह match करता है, एक-एक character। तो एक point आठ शून्य कभी एक point आठ से match नहीं होता।
Play from 26:23 Band के आधे buckets के लिए कोई ऐसा line item नहीं था जो match कर सके। उन buckets की bids बस compete ही नहीं कर सकीं।
Play from 26:31 Fix के दो हिस्से हैं।
Play from 26:33 पहला, प्रभावित line items पर targeting values ठीक कीजिए, और आगे किसी भी upload से पहले spreadsheet के उस column को text के रूप में format कीजिए।
Play from 26:43 दूसरा, audit। आपकी granularity जितनी भी hb_pb values बना सकती है, उनकी पूरी list बनाइए। आपके Prebid line items असल में जो values target करते हैं, उन्हें export कीजिए। फिर फ़र्क की list बनाइए।
Play from 26:58 पहली list की जो भी value दूसरी में नहीं है, वो एक ऐसी bid है जो compete नहीं कर सकती। ये audit हर line item बदलाव के बाद चलाइए, सिर्फ़ तब नहीं जब revenue गिरे।
Play from 27:09 दो mismatches। दोनों पहली नज़र में ठीक लगते हैं, और दोनों में असली पैसा जाता है।
Play from 27:29 पहले, गलत code। Prebid के ad unit का नाम div-mpu-top है। GPT slot, div-mpu में है। तो Prebid की targeting div-mpu-top के नाम पर रखी गई है, और slot के पास कोई hb key है ही नहीं। इस page की हर bid बेकार जा रही है, और screen पर कुछ भी ये नहीं बताता।
Play from 27:40 अब bucket mismatch। ये page auto granularity इस्तेमाल करता है। Top bid एक डॉलर तिरासी सेंट है। Prebid इसे नीचे round करके एक डॉलर अस्सी वाले bucket में डालता है, और slot पर hb_pb, text के रूप में एक point आठ शून्य है।
Play from 27:50 Screen पर उन values की एक illustrative list है जिन्हें हमारे line items target करते हैं, वैसी जैसी spreadsheet upload के बाद थीं। क्या इसमें एक point आठ शून्य है? False आता है। एक point आठ? True आता है। आपके और मेरे लिए एक ही नंबर, Ad Manager के लिए अलग text।
Play from 28:09 अब audit, एक line में। Page पर एक छोटा helper है जो हर वो bucket list करता है जो auto granularity बना सकती है। जिन्हें हमारे line items cover करते हैं उन्हें हटा दीजिए, और जो बचता है वही gap है। हर गायब value शून्य पर ख़त्म होती है। यही आपकी fix list है।
Play from 28:29 Price buckets के साथ हम तीन गलतियाँ देखते हैं।
Play from 28:31 Price column को text के रूप में format किए बिना spreadsheet से line items upload करना।
Play from 28:37 Line items को match करने के लिए दोबारा बनाए बिना Prebid में price granularity बदलना। पुराने line items, नए buckets, चुपचाप नुकसान।
Play from 28:46 और सिर्फ़ एक price test करना। एक bucket का चलना बाकी सब buckets के बारे में कुछ नहीं बताता। पूरी list का audit कीजिए।
28:55Case: the blank ad
Play from 28:55 आख़िरी chapter। Cold open वाले screenshot पर लौटते हैं: article pages पर एक blank half-page।
Play from 29:04 हमें ये पता है। Illustrative नंबर।
Play from 29:06 Slot कुछ readers के लिए blank है, सबके लिए नहीं।
Play from 29:10 Ad Manager उस slot के Prebid line items के impressions report करता है।
Play from 29:14 Prebid का अपना analytics दिखाता है कि उस slot पर render rate लगभग पचानवे प्रतिशत से गिरकर लगभग सत्तर रह गया है।
Play from 29:24 Blank slot एक problem नहीं है। ये कम से कम तीन हैं, और ये अलग-अलग layers में रहती हैं।
Play from 29:30 पहली तरह: Ad Manager ने कुछ नहीं लौटाया। कोई line item match नहीं हुआ। GPT slot को empty report करता है।
Play from 29:37 दूसरी तरह: Ad Manager ने एक Prebid line item serve किया, लेकिन Prebid creative जीतने वाला ad लाने या दिखाने में fail हुआ।
Play from 29:46 तीसरी तरह: Ad Manager ने किसी दूसरे line item का creative serve किया, और वो creative ख़ुद टूटा हुआ है।
Play from 29:53 दो events इन्हें कुछ ही seconds में अलग कर देते हैं।
Play from 29:58 पहला event है GPT का slotRenderEnded। इसे googletag dot pubads dot addEventListener से सुनिए।
Play from 30:06 अगर isEmpty true है, तो Ad Manager ने कोई ad नहीं लौटाया। ये पहली तरह है, तो steps चार और पाँच पर वापस जाइए।
Play from 30:15 GPT एक fail हुई ad request को भी empty slot की तरह report करता है, तो network की problem भी पहली तरह जैसी दिख सकती है।
Play from 30:22 अगर isEmpty false है, तो lineItemId पढ़िए। क्या ये आपके Prebid line items में से एक है? तो ये दूसरी तरह है। कोई और line item? तो ये तीसरी तरह है, और ये उसकी ज़िम्मेदारी है जिसने वो creative traffic किया।
Play from 30:36 दूसरी तरह के लिए, Prebid का event log काम संभालता है।
Play from 30:39 एक healthy Prebid render में bidWon, फिर adRenderSucceeded दिखता है।
Play from 30:44 Fail हुए render में adRenderFailed दिखता है, एक reason के साथ।
Play from 30:47 cannotFindAd का मतलब है कि creative ने ऐसी ad ID माँगी जो इस page पर Prebid के पास नहीं है। ये आमतौर पर Ad Manager के creative की तरफ़ इशारा करता है: टूटा हुआ hb_adid macro, या hard-coded ID।
Play from 31:01 exception का मतलब है कि render करते समय कुछ ने error फेंका। Creative का markup देखिए, और page पर हर उस चीज़ को जो ad frames में दख़ल देती है।
Play from 31:12 हमारे case में slotRenderEnded ने isEmpty false दिखाया, और एक Prebid line item ID। यानी दूसरी तरह।
Play from 31:20 Event log में cannotFindAd के साथ adRenderFailed दिखा, सिर्फ़ half-page slot पर।
Play from 31:26 वजह: एक नया half-page creative किसी पुराने test से copy किया गया था, जिसमें hb_adid macro की जगह हाथ से type की हुई ad ID थी।
Play from 31:36 एक creative ठीक हुआ, और अगले दिन render rate वापस ऊपर आ गया। Module आठ में आप एक render failure live देखेंगे, जब हम इन events को monitoring में बदलेंगे।
Play from 31:48 Blank ads के साथ हम तीन गलतियाँ देखते हैं।
Play from 31:50 हर blank को एक ही problem मानना। पहले isEmpty पढ़िए। एक ही step में खोज आधी हो जाती है।
Play from 31:57 Prebid creative ठीक करना, जबकि line item कभी Prebid का था ही नहीं। कुछ भी edit करने से पहले lineItemId check कीजिए।
Play from 32:05 और सिर्फ़ Ad Manager impressions देखना। Serve हुआ impression जो कभी render नहीं हुआ, वहाँ फिर भी गिना जाता है। Render rate से ही ये दिखता है।
32:13Recap and quick checks
Play from 32:14 Recap से पहले, debugging के बारे में तीन myths।
Play from 32:17 Myth एक: timeout बढ़ाने से "Prebid कभी नहीं जीतता" ठीक हो जाता है। आमतौर पर ये code, targeting या line item की problem होती है, और routine उसे जल्दी ढूँढ लेता है।
Play from 32:30 Myth दो: अगर getAdserverTargeting keys दिखाता है, तो Ad Manager को वो मिल गईं। ये दिखाता है कि Prebid अभी क्या भेजता। Slot से पूछिए।
Play from 32:40 Myth तीन: bug reproduce करने के लिए production traffic चाहिए। Debugging module से आप अपने ही page पर no-bids, late bids और ठीक-ठीक prices खड़ी कर सकते हैं।
Play from 32:52 चलिए Module सात को recap करते हैं।
Play from 32:55 एक असली page view से शुरू कीजिए, अपने reader के हालात में, pbjs_debug on करके।
Play from 33:01 छह steps order में चलाइए: reproduce और scope, auction, समय पर bids, slot पर targeting, line item match, render।
Play from 33:10 Problem खड़ी करने के लिए Debugging module इस्तेमाल कीजिए, और बाद में उसे बंद कीजिए।
Play from 33:15 No-bids, late bids और rejected bids तीन अलग चीज़ें हैं।
Play from 33:19 hb_pb की तुलना text की तरह कीजिए, और हर line item बदलाव के बाद buckets का audit कीजिए।
Play from 33:26 और blank ad के लिए पहले isEmpty और lineItemId पढ़िए, फिर adRenderFailed।
Play from 33:32 अब आप पता लगा सकते हैं कि एक page view में क्या गलत हुआ।
Play from 33:50 Module आठ में, जो आख़िरी module है, हम एक page view से zoom out करके लाखों पर जाएँगे। आपके partner की report और Ad Manager में मेल क्यों नहीं बैठता? उन्हें line-by-line reconcile कैसे करें? कौन से alerts अगले storm को पहले ही दिन पकड़ लेते हैं? और आठों modules की हर चीज़ एक system के रूप में कैसे जुड़ती है?
Play from 33:58 और जब भी इनमें से किसी काम के लिए partner चाहिए, RediAds की team rediads dot com पर मिलेगी।
Play from 34:02 पहले Module सात का quiz दीजिए। Module आठ में मिलते हैं।
- pbjs_debug
- A URL parameter that makes Prebid explain itself in the console.
- Debugging module
- A Prebid module that replaces real bids with test bids you define.
- Intercept rule
- A Debugging module rule: when a request looks like this, answer like that.
- Event log
- Prebid's record of every step of every auction on the page, from pbjs.getEvents.
- Publisher Console
- Google's on-page view of what Ad Manager did with each slot.
- No-bid
- A bidder answering in time with nothing to offer.
- Late bid
- A real bid that arrived after Prebid stopped waiting.
- Render failure
- A winning bid that never displayed, reported by the adRenderFailed event.