เรามีแอปพลิเคชัน 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
เราเห็นว่าไม่มี ความดันหน่วยความจำ
.
เราต้องการคำแนะนำดังต่อไปนี้:
- เราจะทราบได้อย่างไรว่าบัฟเฟอร์ถูกบุกรุกจริงหรือไม่ เราสามารถทราบขนาดบัฟเฟอร์ที่จัดสรรในช่วงเวลาหนึ่งได้หรือไม่? หรือขนาดบัฟเฟอร์สูงสุดคืออะไร? หากขนาดบัฟเฟอร์สูงสุดจริงคือ 6 MiB เราสามารถสันนิษฐานได้ว่าบัฟเฟอร์ถูกโอเวอร์รัน
- หากบัฟเฟอร์ถูกบุกรุก เพราะเหตุใด
ความดันหน่วยความจำ
ไม่ได้ตั้งค่าสถานะ? ไม่ ความดันหน่วยความจำ
แฟล็กหมายความว่าระบบไม่สามารถจัดสรร ขั้นต่ำ
ขนาดบัฟเฟอร์?
- ทำ
บัฟเฟอร์เกิน
และ แพ็คเก็ตยุบ
หมายความว่าขนาดบัฟเฟอร์ซ็อกเก็ตไม่เพียงพอใช่หรือไม่
ขอขอบคุณ.