مواد پر جائیں
AutoValue
17 اکتوبر، 2026 · Data Quality

وہ ہفتہ جب ہم 84,000 لسٹنگز کھو بیٹھے، اور قصوروار ٹھہرایا پراکسیز کو

AutoValue Editorial
وہ ہفتہ جب ہم 84,000 لسٹنگز کھو بیٹھے، اور قصوروار ٹھہرایا پراکسیز کو

14 ستمبر

ہم ہفتوں سے اس دن کا انتظار کر رہے تھے۔ ہمارا ریذیڈنشل پراکسی فراہم کنندہ جولائی میں بلنگ کی خرابی کی وجہ سے بند ہو گیا تھا، اور دو مہینوں سے ہمارے 1,375 ذرائع کا ایک بڑھتا ہوا حصہ ناقص طریقے سے، یا بالکل نہیں، کرال ہو رہا تھا — فیچز ٹائم آؤٹ ہو رہے تھے، آئی پیز سیشن کے بیچ میں بلاک ہو رہے تھے، وہ سست رفتار نقصان جو کسی آؤٹیج کی طرح نظر نہیں آتا بلکہ ایک سکڑتے ہوئے عدد کی طرح جس پر کسی کی نظر نہیں جاتی جب تک کہ وہ شرمناک حد تک نہ پہنچ جائے۔ ہم نے تجدید کر دی۔ نیا پول، 20,000 گھومتی ہوئی ریذیڈنشل سیشن لائنز، پروڈکشن کے قریب لائے جانے سے پہلے ہر exit کو پروب کیا گیا۔ پروب کا 100% کامیاب رہا۔ UAE، جرمنی، جاپان — سب لائیو، سب صاف۔

تو ہم نے ایک نگرانی شدہ کرال چلایا، وہ قسم جس میں کوئی واقعی ڈیش بورڈ دیکھتا ہے بجائے اس کے کہ کرون پر بھروسہ کیا جائے۔ مجھے اس کے برعکس کی توقع تھی، کسی آفت کی نہیں۔

جو ہمیں ملا وہ ایک ڈیٹا بیس تھا جس نے ایک ہی پاس میں 84,401 قطاریں کھو دی تھیں، اور 102 ذرائع اپنے پچھلے سنیپ شاٹ سے 25% سے زیادہ گر گئے تھے۔ یہ اس دو ماہ کی پراکسی قلت سے بھی بدتر تھا جسے ہم نے ابھی ٹھیک کیا تھا۔

غلط نظریہ، مختصراً

میرا پہلا خیال — اور میں اسے کھلے دل سے مانتا ہوں — یہ تھا کہ نیا پول کسی طرح اس سے بدتر تھا جو پروب نے ظاہر کیا۔ شاید سیشن آئی پیز کرال کے دوران ریٹ لمٹ ہو رہی تھیں، ایسے طریقے سے جو ایک یک بارہ پروب پکڑ نہیں سکتا تھا۔ یہ ایک معقول نظریہ ہے۔ یہ غلط بھی ہے، اور آدھے دن کے لیے بھی اس پر یقین کرنا ہمیں وہ وقت دے گیا جو ہمارے پاس نہیں تھا، کیونکہ کرال کرون اس پوری مدت میں رکا رہتا ہے جب تک آپ ایسے نظریے کو جانچ رہے ہوتے ہیں — آپ نہیں چاہتے کہ ایک خراب پاس ایک اچھے سنیپ شاٹ کو اوور رائٹ کر دے جب تک آپ ابھی قیاس ہی کر رہے ہیں۔

وہ نشانی جس نے اس نظریے کو توڑا، dubizzle تھی۔ ہمارے سب سے زیادہ حجم والے UAE ذرائع میں سے ایک، جس نے اس رن کے دوران دراصل 32,595 لسٹنگز فیچ کی تھیں — ایک بالکل صحت مند عدد، پراکسیز واضح طور پر کام کر رہی تھیں — اور پھر تقریباً سب کو پھینک دیا۔ فیچ کرنے میں ناکام نہیں ہوا۔ فیچ کیا، اور پھر ضائع کر دیا۔

16 ستمبر: اصل بگ کی تلاش

یہیں سے یہ پراکسی کی کہانی نہیں رہی بلکہ قطار کی تبدیلی (row-replacement) کی کہانی بن گئی۔ ہماری persistence لیئر ہر پاس میں ہر ذریعے کا سنیپ شاٹ <site>_cars_for_sale.csv کے مکمل اوور رائٹ کے طور پر لیتی ہے — صرف موجودہ لسٹنگز، پوری ٹیبل کی جگہ نئی۔ یہ درست رویہ ہے جب کرال مکمل ہو جائے۔ یہ تباہ کن ہے جب کرال درمیان میں ٹائم آؤٹ ہو جائے اور اسکریپر جو بھی جزوی بیچ جمع کر پایا ہو اسے مکمل سنیپ شاٹ کی طرح لکھ دے۔ ایک ذریعہ جو عام طور پر 9,000 لائیو لسٹنگز رکھتا ہے، اسے صرف ان 1,200 سے اوور رائٹ کر دیا جاتا ہے جو وقت ختم ہونے سے پہلے اسکریپ ہو سکیں، اور باقی 7,800 غائب ہو جاتی ہیں — اس لیے نہیں کہ گاڑیاں بک گئیں، بلکہ اس لیے کہ ہمارے اپنے کوڈ نے فیصلہ کیا کہ ایک نامکمل فیچ مکمل تھا۔

پراکسیز ہم سے جھوٹ نہیں بول رہی تھیں۔ مسئلہ ریٹرائی لاجک تھا، اور یہ خاموشی سے کافی عرصے سے خراب تھا، صرف ایک زیادہ صحت مند پول کی وجہ سے چھپا ہوا تھا جو پہلے sweep کے اثر انداز ہونے سے پہلے ہی فیچز مکمل کر لیتا تھا۔

یہاں وہ ہے جو اس sweep نے دراصل ہمیں قیمت چکائی، جب ہم نے حساب لگایا:

پرانا ریٹرائی sweepٹھیک کیا گیا sweep
فی پراکسی ریٹرائیز31
ہر کوشش پر تاخیر1s—
50-پراکسی پول پر مؤثر حد~56 منٹ فی یو آر ایل120-سیکنڈ کل بجٹ
ٹائم آؤٹ پر رویہجزوی بیچ کو مکمل سنیپ شاٹ کے طور پر لکھتا ہےذریعہ چھوڑ دیا جاتا ہے، پچھلا سنیپ شاٹ برقرار

ایک ہی یو آر ایل کو چھوڑنے میں چھپن منٹ۔ اسے ایک ہزار سے زیادہ ذرائع پر مشتمل کرال پر ضرب دیں تو آپ کو بالکل وہی خاموش، ناہموار طریقے سے تقسیم شدہ ناکامی ملتی ہے جو ہم نے دیکھی — کچھ ذرائع بالکل ٹھیک، 102 بری طرح خالی، لاگز میں کچھ بھی "پراکسی آؤٹیج" کی چیخ نہیں مار رہا تھا، کیونکہ تکنیکی طور پر، کوئی آؤٹیج تھی ہی نہیں۔

25 ستمبر: حل، اور وہ حصہ جو آپ کے لیے اہم ہے

نو دن بعد جو پیچ شپ ہوا اس نے دو غیر دلکش کام کیے۔ اس نے ریٹرائی کے حساب کو محدود کر دیا تاکہ ایک پھنسا ہوا فیچ تقریباً ایک گھنٹہ کھانے کے بجائے تیزی سے ناکام ہو جائے، اور — یہی وہ تبدیلی ہے جو دراصل ڈیٹا کے نقصان کو روکتی ہے — ایک جزوی فیچ اب مکمل قطاروں کے سیٹ کی جگہ نہیں لیتا۔ اگر کوئی ذریعہ اپنی معمول کی 9,000 لسٹنگز میں سے صرف 1,200 تک پہنچ پائے، تو ہم پچھلا مکمل سنیپ شاٹ برقرار رکھتے ہیں اسے ایک حصے سے اوور رائٹ کرنے کے بجائے۔ اسی دن ایک دوسری تبدیلی بھی آئی جو ایک نظر آنے والا CRAWL_PAUSED فلیگ لکھتی ہے جسے ہماری مانیٹرنگ کسی گراوٹ پر کسی کو الرٹ کرنے سے پہلے چیک کرتی ہے — تاکہ ایک جانا بوجھا وقفہ وقفہ ہی پڑھا جائے، الرٹ نہیں۔

ایک پڑھنے والا جو سیکنڈ ہینڈ ہنڈائی خرید رہا ہے، اسے اس سب سے کیا دلچسپی ہونی چاہیے؟ کیونکہ جو below-market فلیگز ہم شائع کرتے ہیں — جن میں سے اس ہفتے تک سائٹ پر 12,823 لائیو ہیں — صرف اس وقت درست ہوتے ہیں جب جس کوہورٹ سے ہم کسی لسٹنگ کا موازنہ کر رہے ہیں وہ حقیقی، مکمل علاقائی مارکیٹ ہو، نہ کہ اس کا ٹائم آؤٹ سے کٹا ہوا ٹکڑا۔ ایک ڈیل بیج جو ایک ایسے سنیپ شاٹ کے خلاف بنایا گیا ہو جس نے اپنے موازنہ سیٹ کا تین چوتھائی حصہ کھو دیا ہو، ڈیل بیج نہیں، سبز لیبل پہنے ہوئی شور (noise) ہے۔ ہم ایک کرال کو نو دن کے لیے روکنا، اسے شائع کرنے سے زیادہ بہتر سمجھتے ہیں۔

آج ڈیٹاسیٹ 73 خطوں اور 1,375 ذرائع میں 1,108,535 لسٹنگز پر کھڑا ہے — اس سب کے شروع ہونے سے پہلے سے بڑا، پراکسیز تازہ اور قطار کی تبدیلی کا بگ بند۔ لیکن وہ عدد جس کی طرف میں بار بار لوٹتا ہوں وہ کُل تعداد نہیں۔ یہ 84,401 ہے — وہ خلا جو ایک ایسے کرال کے درمیان تھا جو پراکسی لیئر پر صحت مند نظر آتا تھا، اور ایک ایسے کرال کے درمیان جو دراصل صحت مند تھا۔

Data QualityWEB ScrapingCrawl ReliabilityBelow Market Deals
شیئر کریں

متعلقہ مضامین