ฉันเพิ่งผลักดันการเปลี่ยนแปลงครั้งใหญ่ในโค้ดแบ็กเอนด์ของฉัน และสังเกตเห็นว่าค่าเฉลี่ยการโหลดเพิ่มขึ้นอย่างมากภายในเวลาไม่กี่ชั่วโมงนับตั้งแต่มีการพุช ฉันดูที่ Munin ว่าปัญหาคืออะไร และฉันสังเกตเห็นว่าปริมาณงานของไฟร์วอลล์เพิ่มขึ้นอย่างมากเมื่อรวมกับค่าเฉลี่ยโหลด:

ปริมาณไฟร์วอลล์

สิ่งนี้ควบคู่ไปกับการเพิ่มขึ้นของการใช้งาน CPU การขัดจังหวะและค่าเฉลี่ยการโหลด ซึ่งฉันได้เพิ่มที่นี่เพื่อความสมบูรณ์:

ซีพียู

อินเตอร์รัปต์

โหลดเฉลี่ย

ไม่มีใครรู้ว่าจะเกิดอะไรขึ้นที่นี่? ความคิดในทันทีของฉันคือการเปลี่ยนแปลงโค้ดทำให้ฐานข้อมูลโหลดมากขึ้น (PostgreSQL) แต่ฉันไม่พบเหตุผลสำหรับการเพิ่มขึ้นของปริมาณงานไฟร์วอลล์ ปริมาณการใช้ข้อมูลยังคงเหมือนเดิม ความแตกต่างเพียงอย่างเดียวที่นี่คือรหัส Python ที่ทำงานภายใต้ Gunicorn ในhtopการเปลี่ยนแปลงกระบวนการที่มี CPU สูงสุดระหว่าง Gunicorn และ Postgres อย่างที่เคยทำมา (แนะนำว่า Postgres ไม่ได้กลายเป็น CPU-hog ทันที)

แก้ไข: นี่คือผลลัพธ์จากiptables -L -n -v:

Chain INPUT (policy ACCEPT 298K packets, 357M bytes)
 pkts bytes target     prot opt in     out     source               destination
 7705  516K fail2ban-ssh  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 296K packets, 372M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination
   17  1720 REJECT     all  --  *      *       58.218.201.19        0.0.0.0/0            reject-with icmp-port-unreachable
   16  1228 REJECT     all  --  *      *       210.45.250.3         0.0.0.0/0            reject-with icmp-port-unreachable
 7583  505K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

อัปเดต: ฉันรีบูทเซิร์ฟเวอร์ทั้งหมดและค่าเฉลี่ยการโหลดเพิ่มขึ้นเป็นประมาณ 7 ดังนั้นฉันเดาว่านี่หมายความว่าฉันสามารถแยกแยะปัญหากับแคชที่มีข้อมูลเก่าหลังจากการเปลี่ยนแปลง DB schema

answer

ชื่อของปลั๊กอิน munin นั้นค่อนข้างโชคร้ายเพราะไม่ได้วัดอะไรที่เกี่ยวข้องโดยตรงกับไฟร์วอลล์ โดยจะแสดงจำนวนแพ็กเก็ตที่ระบบได้รับบนอินเทอร์เฟซใดๆ และจำนวนแพ็กเก็ตที่ส่งต่อผ่านระบบ ดังนั้นไม่ว่าคุณจะมีกฎไฟร์วอลล์กี่กฎ (ถ้ามี!) จะตรวจสอบไฟล์/proc/net/snmpและตรวจสอบฟิลด์ที่ 3 และ 6 ของบรรทัด "Ip:"

คุณกำลังพูดกับเซิร์ฟเวอร์ postgreSQL ของคุณผ่าน tcp/ip หรือผ่านซ็อกเก็ตโดเมน unix หรือไม่ หากผ่าน tcp/ip อาจมีการดำเนินการค้นหาสองครั้งเนื่องจากข้อบกพร่องบางประการในการเปลี่ยนแปลงของคุณ มิฉะนั้น คุณจะต้องค้นคว้าเพิ่มเติมว่าแพ็กเก็ตขาเข้าพิเศษเหล่านั้นมาจากไหน