Score:2

การปรับแต่ง Kernel TCP สำหรับการโอเวอร์รันของบัฟเฟอร์และการยุบแพ็กเก็ต

ธง cn

เรามีแอปพลิเคชัน Nginx+Ruby ซึ่งข้อมูลระหว่าง Nginx และแอปพลิเคชันเชื่อมต่อผ่านซ็อกเก็ต

เป็นส่วนหนึ่งของการปรับปรุงประสิทธิภาพ เมื่อเราวิเคราะห์ เน็ตสแตท สถิติในด้านแอปพลิเคชันที่เราเห็นเหล่านี้:

    แพ็กเก็ต 5334 ตัดออกจากคิวรับเนื่องจากซ็อกเก็ตบัฟเฟอร์โอเวอร์รัน
    แพ็กเก็ต 2299951 ยุบในคิวรับเนื่องจากบัฟเฟอร์ซ็อกเก็ตต่ำ
    227365 ส่ง acks ล่าช้า

สมมติว่า อืมม ความจุบัฟเฟอร์เป็นปัญหาที่เราพบว่า:

$sysctl net.ipv4.tcp_rmem
net.ipv4.tcp_rmem = 4096 87380 6291456

อย่างไรก็ตาม มองว่า cat /proc/net/โปรโตคอล:

ขนาดโปรโตคอล ซ็อกเก็ตหน่วยความจำกด maxhdr slab module cl co di ac io in de sh ss gs se re sp bi br ha uh gp em
PINGv6 1120 0 -1 NI 0 ใช่ ipv6 y y y n n y n y y y y n y y y y y n
RAWv6 1120 0 -1 NI 0 ใช่ ipv6 y y y n y y y n y y y y n y y y y n
UDPLITEv6 1280 0 3 NI 0 ใช่ ipv6 y y y n y y y n y y y y n n n y y y n
UDPv6 1280 0 3 NI 0 ใช่ ipv6 y y y n y y y n y y y y n n n y y y n
TCPv6 2152 4 52 ไม่ใช่ 256 ใช่ ipv6 y y y y y y y y y y y y y y y y y y y y y y
แพ็คเก็ต 1408 0 -1 NI 0 ไม่มีเคอร์เนล n n n n n n n n n n n n n n n n n n n
UNIX 1024 24 -1 NI 0 ใช่ เคอร์เนล n n n n n n n n n n n n n n n n n n
UDP-Lite 1088 0 3 NI 0 ใช่ เคอร์เนล y y y n y y y n y y y y y n n y y y n
PING 912 0 -1 NI 0 ใช่ เคอร์เนล y y y n n y n y y y y y y y y y n
RAW 920 0 -1 NI 0 ใช่ เคอร์เนล y y n y y y n y y y y y y y y n n
UDP 1088 4 3 NI 0 ใช่ เคอร์เนล y y y n y y y n y y y y y n y y y n
TCP 1992 209 52 ไม่ใช่ 256 ใช่ เคอร์เนล y y y y y y y y y y y y y y y y y y
NETLINK 1048 0 -1 NI 0 ไม่มีเคอร์เนล n n n n n n n n n n n n n n n n n n

เราเห็นว่าไม่มี ความดันหน่วยความจำ.

เราต้องการคำแนะนำดังต่อไปนี้:

  1. เราจะทราบได้อย่างไรว่าบัฟเฟอร์ถูกบุกรุกจริงหรือไม่ เราสามารถทราบขนาดบัฟเฟอร์ที่จัดสรรในช่วงเวลาหนึ่งได้หรือไม่? หรือขนาดบัฟเฟอร์สูงสุดคืออะไร? หากขนาดบัฟเฟอร์สูงสุดจริงคือ 6 MiB เราสามารถสันนิษฐานได้ว่าบัฟเฟอร์ถูกโอเวอร์รัน
  2. หากบัฟเฟอร์ถูกบุกรุก เพราะเหตุใด ความดันหน่วยความจำ ไม่ได้ตั้งค่าสถานะ? ไม่ ความดันหน่วยความจำ แฟล็กหมายความว่าระบบไม่สามารถจัดสรร ขั้นต่ำ ขนาดบัฟเฟอร์?
  3. ทำ บัฟเฟอร์เกิน และ แพ็คเก็ตยุบ หมายความว่าขนาดบัฟเฟอร์ซ็อกเก็ตไม่เพียงพอใช่หรือไม่

ขอขอบคุณ.

โพสต์คำตอบ

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