ข้ามไปยังเนื้อหา
AutoValue
28 สิงหาคม 2569 · Data Quality

ฤดูร้อนที่ตัวเลขประกาศขายของเราพัง: บันทึกจากภายในเครื่องรวบรวมข้อมูล

AutoValue Editorial
ฤดูร้อนที่ตัวเลขประกาศขายของเราพัง: บันทึกจากภายในเครื่องรวบรวมข้อมูล

เกือบทุกวันผมจะเปิดแท็บหนึ่งค้างไว้ ซึ่งแสดงแค่จำนวนแหล่งข้อมูลเฉยๆ ไม่มีกราฟสวยๆ ไม่มีตัวกรอง มีแค่ตัวเลขข้างชื่อเว็บไซต์แต่ละแห่งจากทั้งหมด 1,375 แห่งที่เราดึงข้อมูลประกาศขายรถมา พร้อมประทับเวลาว่าแต่ละแห่งเช็คอินครั้งล่าสุดเมื่อไร ส่วนใหญ่แล้วมันน่าเบื่อในแบบที่โครงสร้างพื้นฐานควรจะเป็น แต่ฤดูร้อนนี้ไม่ใช่แบบนั้น และผมคิดว่าเรื่องราวของสิ่งที่ผิดพลาดไปนั้นมีประโยชน์กับคุณในฐานะคนที่กำลังมองหารถมือสองมากกว่าคำแนะนำ "วิธีซื้อรถมือสอง" ทั่วไปที่เราอาจจะเขียนแทน มันคือเรื่องของความหมายที่แท้จริงของคำว่า "ข้อมูลสด" เมื่อสิ่งที่ป้อนข้อมูลนั้นคือเว็บไซต์แยกกัน 1,375 แห่งที่ไม่ได้เป็นหนี้บุญคุณอะไรกับคุณเลย

กลางเดือนกรกฎาคม: ตัวเลขที่ผมภูมิใจ

ภายในกลางเดือนกรกฎาคม เราได้ผลักดันทะเบียนแหล่งข้อมูลขึ้นไปถึง 1,190 แหล่ง ครอบคลุม 73 ภูมิภาค ซึ่งเป็นผลจากการใช้เวลาหลายสัปดาห์ในการกระทบยอดรายการซ้ำและลิงก์ที่ตายแล้วซึ่งเคยทำให้ตัวเลขของเราเองพองเกินจริงอย่างเงียบๆ ผมจำได้ว่าคิดว่าตัวเลข 1,190 แหล่งข้อมูลจริงที่เช็คอินได้นั้นเป็นอะไรที่น่าภูมิใจ นั่นคือเว็บไซต์ดีลเลอร์ กระดานประกาศขาย และฟีดการประมูลจำนวนมาก แต่ละแห่งมีโครงสร้าง HTML ของตัวเอง มีขีดจำกัดอัตราการเข้าถึงของตัวเอง และมีความคิดเห็นของตัวเองว่าตัวสแครปเปอร์คือลูกค้าหรือผู้โจมตี

จากนั้นแคมเปญเคลียร์งานค้างที่เรารันอยู่ — ไล่เคลียร์รายการรอ 683 แหล่งที่ถูกเลื่อนออกไปเป็นเดือนๆ บางแหล่งถูกบล็อก บางแหล่งก็แค่ยังไม่เคยถูกสร้างขึ้นมาเลย — ก็เริ่มทยอยเสร็จ ตลอดครึ่งหลังของเดือนกรกฎาคม มี 274 แหล่งจากในนั้นถูกสร้างและเชื่อมต่อเข้าระบบสำเร็จ พอสิ้นเดือน ตัวเลขแหล่งข้อมูลที่ใช้งานได้ก็ขึ้นไปถึง 1,464 นั่นคือสัปดาห์ประเภทที่คุณอยากแคปหน้าจอเก็บไว้

ต้นเดือนสิงหาคม: 241 แหล่งข้อมูล หายไป

แล้วก็มาถึงตัวเลขที่ทำลายสัปดาห์นั้นทิ้ง คือ ในชั่วข้ามคืน แหล่งข้อมูล 241 แหล่งตกอยู่ในสถานะเสื่อมประสิทธิภาพ ไม่ใช่เพราะอะไรที่เราทำ แต่เพราะบัญชีของผู้ให้บริการพร็อกซีของเราหมดอายุในฝั่งการเรียกเก็บเงิน และทราฟฟิกส่วนใหญ่ของเราวิ่งผ่าน IP แบบหมุนเวียนโดยเฉพาะเพื่อไม่ให้ถูกบล็อกจากเว็บไซต์ที่จำกัดอัตราการเข้าถึงของสแครปเปอร์ ไม่มีพร็อกซี ก็ไม่มีหน้าใหม่ ไม่มีประกาศขายใหม่ แหล่งข้อมูลไม่ได้ประกาศว่ามันเสีย มันแค่เงียบๆ หยุดส่งข้อมูลใหม่กลับมา ในขณะที่ประกาศขายเก่าๆ ก็ยังนอนอยู่ตรงนั้นดูเหมือนเป็นข้อมูลปัจจุบัน

นี่คือส่วนที่ไม่ปรากฏในตัวเลขจำนวนประกาศขายบนเว็บไซต์รถยนต์ใดๆ รวมถึงของเราด้วย เว้นแต่คุณจะตั้งใจไปค้นหา นั่นคือตลาดที่ "สด" สามารถมีแถวข้อมูลเก่านอนอยู่ข้างๆ ข้อมูลใหม่ และดูเหมือนกันทุกประการจากภายนอก เราจึงตั้งเงื่อนไขให้การส่งงานรวบรวมข้อมูลใหม่ต้องผ่านการตรวจสอบสุขภาพพร็อกซีจริงๆ ก่อน เพื่อไม่ให้พูลที่ตายแล้วทำให้คุณภาพเสื่อมลงไปอีกอย่างเงียบๆ และหยุดส่วนของตารางเวลาที่จะยิ่งทำให้แย่ลง มันไม่ใช่งานที่ดูหรูหรา แต่มันคืองานประเภทที่ ถ้าคุณไม่เคยได้ยินเรื่องนี้ ก็แปลว่ามีคนทำหน้าที่ของเขาแล้ว

ขอแทรกสักหน่อย เพราะมันคุ้มค่าที่จะพูดตรงๆ ว่า เว็บไซต์ไหนก็ตามที่อ้างจำนวนประกาศขายคงที่ ตัวเลขกลมๆ เท่ากันทุกวัน ไม่ว่าจะไม่ใช่ข้อมูลสดจริงๆ หรือไม่ก็ไม่ได้บอกคุณเกี่ยวกับสัปดาห์แบบนี้

ช่วงที่ระบบค้าง

การต่ออายุพร็อกซีแก้ปัญหาไปได้ส่วนใหญ่ สิ่งที่ผมไม่คาดคิดคือตัวเครื่องรวบรวมข้อมูลเองล็อกตัวเองไม่กี่สัปดาห์ต่อมา — เกิดภาวะ deadlock ในขั้นตอน teardown โดยมี worker thread สิบแปดจากสิบเก้าตัวติดอยู่ใน futex_wait ไม่มีการใช้ CPU เลย นานติดต่อกัน 75 ชั่วโมง ไม่มีการล่ม ไม่มี error log กรีดร้องบอกใคร แค่... ไม่มีอะไรเกิดขึ้น ในขณะที่แดชบอร์ดยังคงแสดงรอบการทำงานที่สำเร็จครั้งล่าสุดราวกับว่ามันคือข้อมูลปัจจุบัน เรายังไม่ได้ติดตั้งระบบ watchdog บนโฮสต์ตัวนั้นโดยเฉพาะ ซึ่งเป็นประโยคประเภทที่คุณจะเขียนได้ก็ต่อเมื่อสิ่งที่มันบรรยายเกิดขึ้นกับคุณมาแล้วครั้งหนึ่งเท่านั้น

เราสร้างระบบ watchdog ขึ้นมา และหยุดตารางเวลาไว้จนกว่าจะยืนยันได้ว่าการต่ออายุพร็อกซีมีเสถียรภาพแล้ว แทนที่จะเสี่ยงให้การรวบรวมข้อมูลที่เสื่อมสภาพครึ่งๆ กลางๆ แทนที่แถวข้อมูลดีๆ ด้วยข้อมูลแย่ๆ อย่างเงียบๆ เพราะแหล่งข้อมูลที่ถูกรวบรวมข้อมูลจะมีประกาศขาย ถูกแทนที่ ไม่ใช่ผสานรวม ดังนั้นรอบการทำงานที่แย่ไม่ได้แค่ไม่เพิ่มข้อมูล แต่มันสามารถลบแถวข้อมูลดีๆ ทิ้งไปจริงๆ แล้วใส่ข้อมูลที่แย่กว่าเข้าไปแทน ความไม่สมมาตรนี้เองคือเหตุผลที่เรายอมให้ข้อมูลค้างเก่าไปหนึ่งวันดีกว่ารันแบบเสื่อมสภาพ

ตัวเลขไปลงเอยตรงไหน

นี่คือจำนวนวันนี้ และรูปทรงของหกสัปดาห์ที่พาเรามาถึงจุดนี้

เราลงเอยที่ 1,375 แหล่งข้อมูล ครอบคลุม 73 ภูมิภาค ป้อนประกาศขายสดจำนวน 1,108,535 รายการ โดยมี 12,823 รายการที่ถูกตั้งค่าสถานะว่าราคาต่ำกว่ากลุ่มเปรียบเทียบในภูมิภาคของตนในขณะนี้ นั่นคือแหล่งข้อมูลที่น้อยกว่าจุดสูงสุดในเดือนกรกฎาคมประมาณ 90 แหล่ง บางส่วนจาก 241 แหล่งที่เสื่อมสภาพไม่เคยกลับมาเต็มร้อยเปอร์เซ็นต์ บางแห่งเป็นเว็บไซต์ที่เปลี่ยนท่าทีต่อต้านบอทไปในระหว่างนั้นและต้องสร้างขึ้นใหม่แทนที่จะแค่เชื่อมต่อกลับ เรายังคงตามแก้ไขอยู่บางส่วน

สิ่งนี้มีค่าอะไรกับคุณจริงๆ

ไม่มีอะไรในเรื่องนี้ที่เปลี่ยนแปลงว่าคุณควรซื้อรถคันไหน แต่มันควรเปลี่ยนวิธีที่คุณอ่านตัวเลข "สินค้าคงคลังสด" บนเว็บไซต์รถยนต์ใดๆ ไม่ใช่แค่ของเรา ฝรั่งเศสอยู่อันดับสูงสุดในจำนวนภูมิภาคของเราตอนนี้ด้วย 67,569 ประกาศขาย ญี่ปุ่นตามมาติดๆ ที่ 61,940 และตัวเลขเหล่านี้เคลื่อนไหว ไม่ใช่เพราะตลาดรถมือสองเองแกว่งตัวเร็วขนาดนั้น แต่เพราะโครงสร้างพื้นฐานที่เฝ้ามองมันต่างหากที่แกว่ง ประกาศขายที่ค้างมาสามวันเพราะแหล่งข้อมูลเสื่อมสภาพจะดูเหมือนประกาศขายใหม่เป๊ะ เว้นแต่แพลตฟอร์มจะซื่อสัตย์เกี่ยวกับความแตกต่างนั้น

เรายอมบอกคุณเกี่ยวกับการค้าง 75 ชั่วโมง ดีกว่าแสร้งทำเป็นว่าตัวเลขของเราไม่เคยสั่นคลอน ชุดข้อมูลที่ไม่เคยยอมรับว่ามีสัปดาห์ที่แย่ คือชุดข้อมูลที่คุณควรสงสัยมากกว่า ไม่ใช่น้อยกว่า

Data QualityWEB ScrapingMethodologyTransparencyMarket Data
แชร์

บทความที่เกี่ยวข้อง