Score:2

สิ่งที่อาจทำให้คำขอ TCP / HTTP ล่าช้า / ล้าหลัง

ธง in

เรามีอุปกรณ์ที่ส่งคำขอ POST หรือข้อความ TCP ในช่วงเวลาที่กำหนดโดยมีเพย์โหลด JSON ผ่านอินเทอร์เน็ตไปยังเซิร์ฟเวอร์ของเราที่เรียกใช้แอปพลิเคชันโหนดในตำแหน่งอื่น

เพย์โหลด JSON มีการประทับเวลาและค่าอื่นๆเราเปรียบเทียบการประทับเวลานั้นกับการประทับเวลาของเซิร์ฟเวอร์เพื่อคำนวณความแตกต่างของเวลา ซึ่งเราเรียกว่าการหน่วงเวลา

ช่วงเวลาคือ 100ms สิ่งที่เราพบคือในตอนแรก ความล่าช้าต่ำกว่า 200 มิลลิวินาที เราปล่อยให้ระบบทำงานสองสามวันและเราสังเกตว่าความล่าช้านั้นเพิ่มขึ้น หลังจาก 2-3 วันจะมีความเร็ว 2,000 - 3,000 มิลลิวินาที และเพิ่มขึ้นอีก .. หลังจาก 6 วันประมาณ 6,000 มิลลิวินาที

เมื่อเราเริ่มการทำงานของเซิร์ฟเวอร์ใหม่ ความล่าช้าก็กลับมาเป็นปกติ ดังนั้นฉันจึงถือว่าผู้ส่งตกลง สิ่งนี้เกิดขึ้นกับทั้งการใช้งานคำขอ POST และการใช้งานข้อความ TCP

ไม่มีใครมีความคิดว่าเหตุใดสิ่งนี้จึงเกิดขึ้น หรือวิธีจำกัดปัญหาให้แคบลง

sh flag
Ben
เนื่องจาก AlexD ระบุว่านาฬิกาของเซิร์ฟเวอร์และไคลเอ็นต์อาจแตกต่างกันได้ หากต้องการตรวจสอบเวลา ควรใช้เวลาเริ่มต้น/สิ้นสุดในเครื่องเดียวกัน
jp flag
คุณช่วยลองทริกเกอร์/กำหนดเวลาข้อความด้วยตนเองในวันที่ 1 เทียบกับวันที่ 3 และเปรียบเทียบประสิทธิภาพได้ไหม คุณจะต้องเรียกใช้ด้วยตนเอง ดังนั้นคุณจึงไม่ต้องสนใจการประทับเวลา/การบันทึกเพื่อชมการแสดงด้วยสายตา สิ่งนี้จะช่วยจำกัดให้แคบลงว่าปัญหาเกิดจากการซิงโครไนซ์ (หากดำเนินการด้วยตนเองอย่างรวดเร็ว) เทียบกับความล่าช้าที่เกิดขึ้นจริง (หากดำเนินการด้วยตนเองช้า)
VL-80 avatar
cn flag
หากเป็นไปได้ ให้ตั้งค่าคู่อุปกรณ์ทดสอบกับเซิร์ฟเวอร์ในสภาพแวดล้อมที่มีการควบคุม ให้อยู่ใกล้กัน และดูว่าปัญหายังคงอยู่หรือไม่ วิธีนี้จะช่วยให้คุณขจัดปัญหาด้านเครือข่ายและควรช่วยจำกัดปัญหาให้แคบลง หากคุณสงสัยว่าการกำหนดเส้นทางผ่านอินเทอร์เน็ตมีส่วนทำให้เกิดปัญหา
Ben Voigt avatar
pl flag
นอกจากนี้ คุณควรวัดเวลาไป-กลับ เนื่องจากต้องใช้การวัดสองครั้งจากแหล่งสัญญาณนาฬิกาเดียว ดังนั้นนาฬิกาที่ไม่ตรง / ผิดพลาด / เอียง จึงไม่สามารถสับสนกับการหน่วงเวลา / เวลาแฝง
in flag
ลูกค้าคืออุปกรณ์ที่มีระบบปฏิบัติการของตัวเอง ฉันพยายามจำลองอุปกรณ์แล้ว แต่ไม่สามารถจำลองปัญหาได้ เวลาไป-กลับค่อนข้างต่ำ โดยปกติจะต่ำกว่า 20 มิลลิวินาที การสืบพันธุ์ใช้เวลาหลายวัน กระบวนการค้นหาสิ่งนี้ค่อนข้างช้า
Score:6
ธง jp

คุณซิงโครไนซ์นาฬิกาทั้งบนเซิร์ฟเวอร์และผู้ส่งหรือไม่ 1 วินาทีต่อวันไม่ใช่การเลื่อนเข็มนาฬิกาที่ผิดปกติ

cn flag
`เมื่อเราเริ่มการทำงานของเซิร์ฟเวอร์ใหม่ ความล่าช้าก็กลับมาเป็นปกติ` แสดงให้เห็นเป็นอย่างอื่น
jp flag
@rtaft เป็นไปได้ว่าพวกเขากำลังใช้นาฬิกาที่ไม่แม่นยำ (`setInterval` ?) ภายในกระบวนการบริการของพวกเขาซึ่งล่องลอยไปตามกาลเวลา หรือพวกเขากำลังเริ่มกระบวนการใหม่โดยรีสตาร์ทเซิร์ฟเวอร์ซึ่งทำ `ntpdate` ตอนบู๊ต แต่ไม่ได้เรียกใช้บริการ `ntpd`
jp flag
@AlexD: ไม่ควรเกิดจากช่วงเวลาที่ไม่แน่นอน เนื่องจากพวกเขากำลังส่งการประทับเวลาของเซิร์ฟเวอร์ในเพย์โหลด การเลื่อนช่วงเวลาจะเลื่อนการประทับเวลารวมไปด้วย อย่างไรก็ตาม การเลื่อนสัญญาณนาฬิกาเป็นไปได้จริง โดยเฉพาะอย่างยิ่งหาก OP ใช้เซิร์ฟเวอร์เสมือน/ระบบคลาวด์ แทนที่จะเป็นเครื่องเฉพาะ
jp flag
@Brian เราไม่รู้ว่าพวกเขาคำนวณการประทับเวลาอย่างไร พวกเขาสามารถได้รับเวลาของระบบหนึ่งครั้งเมื่อเริ่มต้น จากนั้นจึงเพิ่มช่วงเวลา
in flag
เราได้รับวันที่ผ่าน javascript `new Date()` บนเซิร์ฟเวอร์ ไม่น่าเป็นไปได้ที่นาฬิกาจะเลื่อน แต่ฉันจะจำไว้
Score:3
ธง cn

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

ฉันขอแนะนำให้เพิ่มเครื่องมือในโค้ด NodeJS ของคุณเพื่อติดตามคิวภายใน หน่วยความจำที่จัดสรร การค้นหาฐานข้อมูล ฯลฯ บันทึกทุกสิ่งเพื่อให้คุณสามารถเริ่มระบุจุดที่เป็นคอขวดได้

หากคุณทำงานในระบบคลาวด์ มีเครื่องมือดีๆ ที่ช่วยให้โค้ดเครื่องมือ เช่น AWS X-Ray

in flag
ขอบคุณ. ฉันจะตรวจสอบรหัสของฉันอีกครั้ง

โพสต์คำตอบ

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