Score:-1

การเชื่อมต่อ RPC มากเกินไปทำให้ซ็อกเก็ตเว็บปิด

ธง mx

เซิร์ฟเวอร์หลายเครื่องเชื่อมต่อผ่าน RPC มีบางครั้งที่แอปในระบบปฏิบัติการมีการเรียก RPC มากเกินไป ซึ่งทำให้เครือข่ายปิด วิธีที่ดีที่สุดในการดีบักหรือกำหนดค่าระบบปฏิบัติการของฉันคืออะไร

"msg":"ส่งข้อความ ping: เขียน tcp 127.0.0.1:36802->127.0.0.1:1234: ใช้การเชื่อมต่อเครือข่ายแบบปิด"
"msg":"จัดการฉัน:เขียน tcp4 127.0.0.1:1234->127.0.0.1:56244: เขียน: ท่อแตก"
Doug avatar
in flag
คุณขอคำตอบที่แม่นยำและละเอียด แต่ให้รายละเอียดน้อยมากสำหรับคำถาม โดยทั่วไปแล้ว gRPC จะใช้ในการพัฒนาแอปพลิเคชัน ดังนั้นคำถามที่น่าจะถูกย้ายไปที่ Stack Overflow
Shervin Ivari avatar
mx flag
คำขอ @Doug RPC เป็นเรื่องทั่วไป แต่อาจมีข้อ จำกัด บางประการในโปรโตคอล TCP โปรแกรมแจ้งข้อผิดพลาดให้ฉัน เมื่อฉันตรวจสอบทรัพยากร ดูเหมือนทุกอย่างปกติดี และฉันเชื่อว่ามันเป็นปัญหาที่ระบบปฏิบัติการ หากฉันพบบันทึกที่เป็นประโยชน์ในฝั่ง OS โปรดชี้ให้ฉันเห็น
Doug avatar
in flag
ใช่ มันเป็นเรื่องทั่วไป ซึ่งเป็นเหตุผลที่คุณต้องเจาะจง คุณติดแท็ก RPC และ gRPC ดังนั้นโปรแกรมใดใช้อยู่ โปรแกรมนี้เป็นโปรแกรมทั่วไปสำหรับซอร์สโค้ดที่มีอยู่หรือพัฒนาขึ้นเองหรือไม่? คุณได้ดูทรัพยากรใดบ้าง เช่น netstat แสดงอะไรในเวลาที่เกิดข้อผิดพลาด หากไม่มีข้อมูลให้ดำเนินการต่อ ฉันทำได้เพียงเสนอข้อสันนิษฐานว่านี่เป็นแอปพลิเคชัน gRPC แบบกำหนดเองที่เขียนไม่ดี ซึ่งจำเป็นต้องแก้ไขเพื่อใช้ช่องสัญญาณอย่างเหมาะสม ฉันสามารถคิดวิธีแก้ปัญหาอื่นๆ ได้มากมาย แต่ถ้าไม่มีข้อมูล ฉันก็เลือกไม่ได้ว่าจะให้โซลูชันใดแก่คุณ
Score:0
ธง in

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

ในการตรวจสอบการหมดพอร์ตให้ใช้ netstat เพื่อรับสถานะของพอร์ตบนเซิร์ฟเวอร์ หากมีจำนวนพอร์ตมากเกินไป คุณอาจมีปัญหาพอร์ตหมด

gRPC รวบรวมการเชื่อมต่อโดยอัตโนมัติ อย่างไรก็ตาม โค้ดที่เขียนไม่ดีสามารถหยุดสิ่งนี้จากการทำงานได้อย่างถูกต้องโดยการสร้างช่อง gRPC ใหม่มากเกินไป แทนที่จะใช้ช่องที่มีอยู่เดิมซ้ำ ฉันได้อ้างอิงเอกสารของ Microsoft เนื่องจากมีคำอธิบายว่าการสร้างช่องใหม่ส่งผลให้เกิดการเชื่อมต่อ HTTP/2 ใหม่ได้อย่างไร

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

แนวทางปฏิบัติที่ดีที่สุดด้านประสิทธิภาพด้วย gRPC

ควรใช้ช่องสัญญาณ gRPC ซ้ำเมื่อทำการเรียก gRPC การใช้แชนเนลซ้ำทำให้สามารถเรียกมัลติเพล็กซ์ผ่านการเชื่อมต่อ HTTP/2 ที่มีอยู่ได้

หากมีการสร้างแชนเนลใหม่สำหรับการเรียก gRPC แต่ละครั้ง ระยะเวลาที่ใช้ในการทำให้เสร็จสมบูรณ์อาจเพิ่มขึ้นอย่างมาก การโทรแต่ละครั้งจะต้องมีเครือข่ายไป-กลับหลายครั้งระหว่างไคลเอนต์และเซิร์ฟเวอร์เพื่อสร้างการเชื่อมต่อ HTTP/2 ใหม่:

แนวทางปฏิบัติที่ดีที่สุดด้านประสิทธิภาพ

นำสตับและแชนเนลกลับมาใช้ใหม่เสมอเมื่อเป็นไปได้

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

วิธีสร้างบริการ GRPC ผ่านซ็อกเก็ตในเครื่องแทนที่จะเป็น inet ใน scala/java

เซิร์ฟเวอร์ gRPC ใน Python พร้อมซ็อกเก็ตโดเมน Unix

โพสต์คำตอบ

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