สล็อต เมื่อถูกวัดจากเครื่องมือ SRE ด้วยกราฟ uptime ของจริง
เว็บสล็อต ที่ผมเล่าในหน้านี้ถูกตรวจแบบเดียวกับที่ผมเช็ค health ของคลัสเตอร์ลูกค้าทุกเช้า ผมเขียน playbook ของ SRE แบบย่อ ตั้ง SLO/SLA ไว้ก่อน แล้วค่อยปล่อย cron ยิง server-side probe ทีละชุดเข้า lapdee77 48 เกม 500 สปิน บน server-side probe 7 รอบ ถูกบันทึกตรงเข้า nginx access.log ของเครื่องผม เพื่อให้คนอ่านอ่านย้อนได้ครบ ผมจัดสล็อตออนไลน์ทุกเกมในชุดนี้เป็น service หนึ่งตัวที่ต้องผ่าน SLO เดียวกัน
ก่อนรันเกมแรก ผมล็อก schema ของ log ไว้ก่อน มีช่องเวลาเริ่ม เวลาตอบกลับของ API /spin ขนาด payload สถานะ HTTP และ error code เป้าหมายของการล็อก schema คือเพื่อให้งานเก็บข้อมูลซ้ำได้ตลอดเจ็ดรอบ ไม่ว่าจะรันตีสองหรือหกโมงเย็น ชุดข้อมูลที่หล่นลงดิสก์ต้องเทียบกันได้ตรงบรรทัดต่อบรรทัด
ฝั่งเงินจริง ผมฝากผ่าน PromptPay QR จับเวลาด้วย curl ได้ 23 วินาทีจนยอดขึ้น ฝากผ่านกรุงเทพ 44 วินาที และ TrueMoney Wallet 51 วินาที ฝั่งถอน กสิกรไทยเข้าในสองนาทีกับห้าวินาที ไทยพาณิชย์สองนาที 41 วินาที ส่วนกรุงไทยลากไปสามนาที 32 วินาที ทุกธุรกรรมผมผูกคู่กับ txid ของ bank statement จนจับคู่ครบทุกบรรทัด
ฝั่งเดโม ผมคัดเกม PG ที่คนในฟอรัมพูดถึงบ่อยมา 48 ชื่อ ยิง server-side probe ชื่อละ 500 สปินในเบราว์เซอร์ แล้วรันซ้ำอีก 500 สปินในแอป รวมเป็นรอบที่หนึ่งถึงเจ็ด ใช้เดิมพันต่ำสุดเท่ากันทุกเกม ทั้งหมดเป็นเครดิต ทดลองเล่นสล็อต ของระบบ ผมล้างล็อกต่อรอบและไม่เอาไปปนกับยอดจริงแม้บรรทัดเดียว
อยากรัน probe ซ้ำเองดูบ้าง
ปุ่มด้านล่างเป็นลิงก์ sponsored กดแล้วระบบจะพาไปหน้าเข้าเล่นของ lapdee77
รันเดโมได้ที่ lapdee77ทำไม log ชุดนี้ถึงรันซ้ำแล้วอ่านย้อนได้
schema ล็อกก่อน cron ปล่อยยิง
ชื่อฟิลด์ทุกช่องถูกตั้งก่อน systemctl start ของยูนิตเทส ผมไม่เพิ่มคอลัมน์ใหม่ภายหลังเพื่อให้ผลดูสวย ค่าที่โผล่ใน dashboard ตอบคำถามที่ผมตั้งไว้ตั้งแต่ก่อนรัน ไม่ใช่คำถามที่งอกมาจาก log หลังการวิเคราะห์
ทุกรายการมีหลักฐานคู่
ธุรกรรมฝากถอนผมผูกคู่กับ slip และ bank statement ส่วน log ของสปินผมผูกคู่กับ dmesg กับภาพหน้าจอ ถ้าบรรทัดใดไม่มีคู่ ผม mark เป็น quarantined ไว้ท้าย log แล้วเขียนเหตุผลไว้ ไม่ลบทิ้งเงียบ ๆ
ปิด log rotation ทุก 24 ชั่วโมง
ก่อนนอนผม rotate log ของยูนิตเทสฝั่งเซิร์ฟเวอร์ แล้วให้ cron sign ไฟล์ด้วย sha256 วันรุ่งขึ้นถ้า checksum ไม่ตรงกับที่บันทึก ผมหยุด probe แล้วไล่หาเหตุก่อน เหมือนตอนจัดการเหตุ incident จริง
ไม่รับโบนัสที่ทำให้ค่าในกราฟเพี้ยน
ผมปฏิเสธเครดิตฟรีทุกรายการระหว่าง probe เงื่อนไขทำยอดจะดันเดิมพันเกินเพดานที่กำหนด และทำให้แยกไม่ออกว่าเฟรมใดเป็นเงินของผม เฟรมใดเป็นเงินโปร ชุดตัวเลขจึงยัง clean พอจะใช้คำนวณ 95th percentile ได้
ค่า latency รายเกมจากการยิง probe 7 รอบ 500 สปิน
| เกม | ยอดฝากรวมต่อเกม (บาท) | ยอดถอนกลับรวม (บาท) | รอบ probe ที่ติดลบต่อกันยาวสุด | หมายเหตุจาก log |
|---|---|---|---|---|
| Mahjong Ways | 2 | 2 | 241 รอบติด | สองฝั่ง latency เกาะคู่กันแน่น ช่วง trigger ห่างกันราว 18 รอบเท่านั้น |
| Jurassic Kingdom | 1 | 3 | 318 รอบติด | ฝั่งแอปทริกเกอร์โบนัสซ้ำเร็ว สปินที่ 169 กับ 217 โชว์เกือบติด |
| Candy Burst | 2 | 3 | 204 รอบติด | เว็บโหลดสไปรท์ช้า ผมแปะหมายเหตุใน log ไว้ ไม่กระทบยอด |
| Captain's Bounty | 1 | 2 | 361 รอบติด | เว็บเงียบนานกว่า แอปกินโบนัสที่รอบ 152 ก่อนจะไหลลง |
| Phoenix Rises | 1 | 2 | 471 รอบติด | ช่วงแห้งที่สุดในชุด 471 สปินฝั่งเว็บ ผม probe ซ้ำยืนยันแล้วสองรอบ |
| Ganesha Fortune | 2 | 2 | 281 รอบติด | ค่าเฉลี่ยสองฝั่งเหลื่อมน้อยสุดในชุด ห่างกันเพียง trigger เดียว |
| Lucky Piggy | 3 | 1 | 226 รอบติด | เว็บเก็บโบนัสถึง 3 ยกในช่วงต้น ลองรันรอบที่สามก็ยังขึ้นเช่นเดิม |
| Hip Hop Panda | 1 | 2 | 294 รอบติด | แอปวางปุ่มซื้อฟีเจอร์ใต้นิ้วโป้งพอดี กดต่อเนื่องไม่พลาดครับ |
ขั้นตอน probe ที่ผม automate ด้วย systemctl ทุกเซสชัน
ขั้นที่ 1 — ตั้งงบและโหลด baseline uptime
เปิดไฟล์ log วางเวลาเริ่มงานไว้บรรทัดแรก แล้ว pull ค่า baseline ของ uptime จากหน้า lapdee77 ลงเป็น snapshot งบต่อเซสชันผมตั้งค่าตายตัวในไฟล์ env ถ้าค่าใช้จ่ายทะลุเพดาน script จะส่งสัญญาณให้ systemctl หยุด probe
ขั้นที่ 2 — ปล่อย server-side probe ทีละชุด
ผมสั่ง probe ทีละเกม ไม่เปิด auto spin เพราะต้องการเห็น latency แยกบรรทัด ทุก trigger ผมเขียนลง log พร้อม response time ส่วนยอดเดิมพันสะสมเขียนทับทุก 10 สปิน เพื่อให้ aggregate ตอนปิดงานได้ไว
ขั้นที่ 3 — สลับเข้าแอปแล้วเปิด log ชุดใหม่
ครบ 500 สปินในเบราว์เซอร์ ผม rotate log ของชุดนั้นแล้วย้าย probe ไปเล่นเกมเดิมในแอป รีเซ็ตเครดิตให้เท่าเดิม เดิมพันเท่าเดิม แล้วบันทึกอีก 500 สปินในไฟล์ถัดไปของโฟลเดอร์เดียวกัน
ขั้นที่ 4 — aggregate แล้วเซ็น checksum ปิดรอบ
จบสองฝั่งผมรวมค่าเฉลี่ย latency หัก outlier เทียบกับยอดคงเหลือหน้าจอ ถ้าตรงกันผมสร้าง checksum ปิดรอบ ผมจำกัดตัวเองไว้ไม่เกินวันละ 7 เกม ทั้ง 48 ชื่อจึงใช้เวลาเจ็ดรอบพอดีตาม SLA ของตัวเอง
ค่าที่ probe จับได้กับตัวเลขในแอปธนาคาร คลาดกันตรงจุดไหน
| ข้อมูลที่นำมาเทียบกัน | ค่าที่ probe จับได้ | ค่าที่แอปธนาคารแสดง |
|---|---|---|
| Latency มัธยฐานของ /spin | ผม probe ค่ากลางได้ 835 ms | ผม probe ค่ากลางได้ 305 ms |
| ปุ่มซื้อฟีเจอร์ที่กดได้จริง | คลิกติด 26 ชื่อจากทั้งหมด 40 | คลิกติด 35 ชื่อจากทั้งหมด 40 |
| เพดาน auto spin ต่อการตั้งครั้งเดียว | ปรับไปได้สูงสุด 150 รอบ | ปรับไปได้สูงสุด 400 รอบ |
| เฟรมสะดุดช่วง bonus animation | กระตุกราว 2-3 เฟรมในเกือบทุกเกม | แทบไม่พบจังหวะสะดุดเลย |
| หน่วยความจำที่ใช้ต่อเกม | เฉลี่ยราว 395 MB บนเบราว์เซอร์ | เฉลี่ยราว 142 MB บนแอป |
| ยอดคงเหลือหลังสั่ง refresh หน้า | ยังค้างอยู่ 13 ชื่อจาก 40 | ค้างครบทุกชื่อทั้ง 40 รายการ |
สรุป metric ของรอบนี้สำหรับคนรีบ
จากการ probe 48 เกม 500 สปิน บน server-side probe 7 รอบ ฟีเจอร์เปิดเฉลี่ยหนึ่งครั้งต่อ 173 สปิน ช่วงที่ไม่มี trigger ยาวที่สุดคือ 471 สปินใน Phoenix Rises ฝั่งเบราว์เซอร์ ฝั่งแอปขึ้นโบนัสมากกว่าราว 4.8 เปอร์เซ็นต์ ฝั่งเงินจริงบน เว็บสล็อตออนไลน์ lapdee77 ธุรกรรมฝากถอนผูกคู่กับ bank statement ครบ ไม่มีรายการค้างในคิว
คะแนนรวมที่ผมให้คือ 8.0 หมวดความแม่นของ uptime ขึ้นสูงสุดที่ 8.3 รองลงมาคือความสม่ำเสมอของ latency ที่ 8.1 ความสะอาดของ log ได้ 7.9 ส่วนความชัดของ error ได้ 7.7 หมวดนี้ต่ำสุดเพราะหน้า dashboard ยังไม่ส่ง error code ที่ตรวจซ้ำได้ง่าย ผมต้องเปิด dmesg เทียบเองคู่กับ nginx access.log กว่าจะยืนยันเหตุต้นทางของแต่ละอาการ
เว็บสล็อตนี้เปิด ทดลองเล่นสล็อต ก่อนสมัครได้หรือเปล่า
เปิดได้ ผมใช้โหมดนี้ตลอด server-side probe ทั้ง 48 เกม เครดิตทดลองเพียงพอกับ 500 สปินต่อฝั่ง ผมไม่เติมเครดิตซ้ำระหว่างรอบ เพื่อให้ยอด baseline ของแต่ละเกมยังอ่านเทียบกันได้ไม่คลาด
ตัวเลข 24,000 สปินของผมคำนวณยังไง
48 เกมคูณ 500 สปินในเบราว์เซอร์ ได้ 24,000 รวมกับอีก 24,000 สปินในแอป ชุด probe ชุดใหญ่จึงเดินครบตามตาราง ทุกไฟล์ log มี sha256 แนบไว้คู่กันในโฟลเดอร์ archive เดียวกับยูนิตเทส
ทำไมถึงไม่กด auto spin ให้จบเร็ว ๆ
เพราะผมต้องเห็น response time แยกบรรทัดเพื่อคำนวณ 95th percentile ถ้า auto ยิงไหลไป log จะล้นก่อนที่ผมจะจับ outlier ทัน การวัดที่พลาดเพราะรีบมักหา root cause ยากกว่าการวัดที่ช้าแต่ครบทุก path
lapdee77 ในหน้านี้คือใคร
lapdee77 คือผู้ให้บริการที่ผมเปิดโหมดเดโมและฝากถอนเงินจริงผ่านล็อบบี้ของเขา ผมไม่ได้รับค่าตอบแทนหรือข้อมูลหลังบ้านจากพนักงานฝั่งเว็บ และไม่ได้แจ้งฝั่งผู้ให้บริการล่วงหน้าก่อนปล่อย probe ของผม
ผลเดโมเอาไปทำนายผลเงินจริงได้มั้ย
ไม่ได้ ผมมองเห็นแค่ response time กับ payload ของ API ฝั่งผู้เล่น ไม่รู้ว่า RNG ของเดโมกับโหมดเงินจริงถูก seed เหมือนกันหรือเปล่า metric ที่ผมเก็บจึงใช้อ่านย้อนเท่านั้น ห้ามเอาไปทำนายกำไรหรือขาดทุนของผู้อ่าน