คำถามติดแท็ก oom

ลินุกซ์นักฆ่าหน่วยความจำไม่อยู่ในหน่วยความจำ

3
Rsync ทริกเกอร์ Linux OOM killer บนไฟล์ 50 GB ไฟล์เดียว
ฉันมีไฟล์ 50 GB ไฟล์เดียวบน server_A และฉันกำลังคัดลอกไปยัง server_B ฉันวิ่ง server_A$ rsync --partial --progress --inplace --append-verify 50GB_file root@server_B:50GB_file Server_B มี RAM 32 GB พร้อมการสลับ 2 GB ส่วนใหญ่จะไม่ได้ใช้งานและควรมี RAM ฟรีจำนวนมาก มันมีพื้นที่ดิสก์มากมาย ที่ประมาณ 32 GB การถ่ายโอนยกเลิกเนื่องจากด้านระยะไกลปิดการเชื่อมต่อ Server_B หลุดจากเครือข่ายแล้ว เราขอให้ศูนย์ข้อมูลรีบูต เมื่อฉันดูบันทึกของเคอร์เนลจากก่อนที่จะเกิดข้อผิดพลาดฉันเห็นว่ามันใช้การสลับ 0 ไบต์และรายการกระบวนการใช้หน่วยความจำน้อยมาก (กระบวนการ rsync ถูกระบุว่าใช้ RAM ขนาด 600 KB) แต่ oom_killer เป็น ก้าวต่อไปและสิ่งสุดท้ายในบันทึกคือที่ที่มันฆ่ากระบวนการเคอร์เนลของ metalog …
66 rsync  oom  oom-killer 

4
ปิดตัวจัดการ Linux OOM ตามค่าเริ่มต้นหรือไม่
OOM killer บน Linux สร้างความเสียหายให้กับแอพพลิเคชั่นต่าง ๆ ทุกครั้งและดูเหมือนว่าไม่ค่อยมีการพัฒนาเคอร์เนลมากนักเพื่อปรับปรุงสิ่งนี้ จะเป็นการดีกว่าหากเป็นวิธีปฏิบัติที่ดีที่สุดในการตั้งค่าเซิร์ฟเวอร์ใหม่เพื่อย้อนกลับค่าเริ่มต้นในหน่วยความจำที่มีมากเกินไปนั่นคือปิด ( vm.overcommit_memory=2) เว้นแต่คุณรู้ว่าคุณต้องการใช้งานโดยเฉพาะหรือไม่? และกรณีการใช้งานเหล่านั้นจะเป็นอย่างไรในที่ที่คุณรู้ว่าคุณต้องการ overcommitting ในฐานะโบนัสเนื่องจากพฤติกรรมในกรณีที่vm.overcommit_memory=2ขึ้นอยู่กับvm.overcommit_ratioและสลับพื้นที่จะมีกฎอะไรที่ดีสำหรับการปรับขนาดสองหลังเพื่อให้การตั้งค่าทั้งหมดนี้ทำงานอย่างมีเหตุผล
37 linux  memory  kernel  oom 

6
จะทำให้ Linux OOM killer ไม่ฆ่ากระบวนการของฉันได้อย่างไร
ฉันจะให้ Linux OOM killer ไม่ฆ่ากระบวนการของฉันได้อย่างไรเมื่อหน่วยความจำกายภาพต่ำ แต่มีพื้นที่สว็อปมาก? ฉันปิดใช้งานการฆ่า OOM และ overcommit ด้วย sysctl vm.overcommit_memory = 2 VM มี swap ที่ไม่มีการจัดระเบียบฟรี 3 GB และกระบวนการที่ OOM ถูกฆ่านั้นมีการใช้หน่วยความจำสูงสุดน้อยกว่า 200MB ฉันรู้ว่าการแลกเปลี่ยนในระยะยาวจะน่ากลัวสำหรับประสิทธิภาพ แต่ฉันต้องใช้ swap ในตอนนี้เพื่อทำการทดสอบการทำงานภายใต้ valgrind ที่ความต้องการหน่วยความจำยิ่งใหญ่กว่ามาก Mar 7 02:43:11 myhost kernel: memcheck-amd64- invoked oom-killer: gfp_mask=0x24002c2, order=0, oom_score_adj=0 Mar 7 02:43:11 myhost kernel: memcheck-amd64- cpuset=/ mems_allowed=0 …
28 linux  swap  oom 

5
ฉันจะป้องกันไม่ให้ Linux หยุดการทำงานเมื่อหน่วยความจำไม่เพียงพอได้อย่างไร
วันนี้ฉัน (บังเอิญ) รันโปรแกรมบางอย่างบนกล่อง Linux ที่ใช้หน่วยความจำจำนวนมาก ระบบของฉันแข็งเป็นไม่ตอบสนองและทำให้ฉันไม่สามารถฆ่าผู้กระทำความผิดได้ ฉันจะป้องกันสิ่งนี้ในอนาคตได้อย่างไร อย่างน้อยก็ไม่สามารถทำให้แกนตอบสนองหรือสิ่งที่กำลังทำงานอยู่ได้
25 linux  oom 

4
สถานการณ์ของ Linux
ฉันมีสถานการณ์ที่ไม่แน่นอนอย่างต่อเนื่อง ฉันไม่แน่ใจว่าระบบเติม RAM ทั้งหมด (36GB) ทำไมระบบนี้ทำให้เกิดสถานการณ์แบบนี้? ฉันสงสัยว่ามันเกี่ยวข้องกับโซน lowmem ในระบบลินุกซ์ 32 บิต ฉันจะวิเคราะห์ล็อกจากเคอร์เนล panic และ oom-killer ได้อย่างไร ขอแสดงความนับถืออย่างสูง, เคอร์เนล 3.10.24 Dec 27 09:19:05 2013 kernel: : [277622.359064] squid invoked oom-killer: gfp_mask=0x42d0, order=3, oom_score_adj=0 Dec 27 09:19:05 2013 kernel: : [277622.359069] squid cpuset=/ mems_allowed=0 Dec 27 09:19:05 2013 kernel: : [277622.359074] CPU: …

1
คะแนนของเคอร์เนลคำนวณอย่างไร?
ดูใน Google และไม่พบสิ่งใดที่อธิบายถึงวิธีการproc/<pid>/oom_scoreคำนวณคะแนน เหตุใดจึงใช้คะแนนนี้แทนที่จะใช้หน่วยความจำทั้งหมดที่ใช้ไป
12 oom 

2
OOM แม้จะมีหน่วยความจำ (แคช)
เราได้ทำงานเป็นนักฆ่า OOM แม้ว่าจะมีหน่วยความจำของเราเกือบครึ่งที่ใช้สำหรับแคช FS เราได้บันทึกสถิติหน่วยความจำหนึ่งครั้งต่อนาที (ตามที่รายงานไว้ด้านบน) แต่ดูเหมือนว่ามีความพร้อมใช้งานมากมาย ... Mem: 15339640k total, 15268304k used, 71336k free, 3152k buffers Swap: 0k total, 0k used, 0k free, 6608384k cached Mem: 15339640k total, 14855280k used, 484360k free, 13748k buffers Swap: 0k total, 0k used, 0k free, 6481852k cached [OOM killer: postgres killed] Mem: 15339640k …
12 postgresql  oom 

4
วิธีใช้ kdump / crash เพื่อตรวจสอบปัญหา OOM?
ปัญหา เซิร์ฟเวอร์ทำงานล้มเหลวหลังจากมีข้อความ "หน่วยความจำไม่พอ" หลายข้อความและฉันพยายามระบุผู้กระทำผิด หากอยู่ใน userland - กระบวนการใด หากอยู่ในเคอร์เนล - โมดูลเคอร์เนลใด รายละเอียด ฉันพยายามค้นหาวิธีใช้ยูทิลิตีความผิดพลาดเพื่อตรวจสอบสิ่งที่เรียกใช้ OOM บนเซิร์ฟเวอร์ ในฐานะที่เป็นส่วนหนึ่งของการติดตั้งคู่ใหม่ของเซิร์ฟเวอร์ที่ฉันเริ่มต้นการเริ่มต้นของ 14TB DRBDอุปกรณ์ ในช่วงเวลานั้นขณะที่เล่นกับการกำหนดค่าอัตราการซิงค์ DRBD และทำให้อินเทอร์เฟซเครือข่ายถูกผูกมัดบางส่วนขึ้นและลงเซิร์ฟเวอร์ตัวใดตัวหนึ่งทำงานล้มเหลว ในช่วงเวลา 30 วินาทีมันผลิต 39 Out of memory: Kill process ####ข้อความ จากนั้นมันก็ล้มเหลวด้วย: Kernel panic - not syncing: Out of memory and no killable processes... ความผิดพลาดของระบบเรียกkdump ตอนนี้ฉันมีvmcore.flatไฟล์ที่ดีซึ่งควรตรงไปตรงมาเพื่อใช้ในการตรวจสอบปัญหา แต่ฉันมีเวลายากที่จะหาว่าหน่วยความจำทั้งหมดไปที่ใด ทรัพยากรเท่านั้นฉันรู้คือเว็บไซต์ของ Dedoimedoซึ่งมีคำแนะนำที่ดีและเคอร์เนลชนหนังสือ สิ่งเหล่านี้ก็เป็นแหล่งข้อมูลเดียวที่แนะนำในคำตอบดังนั้นฉันคิดว่านั่นcrashเป็นวิธีเดียวที่จะตรวจสอบ …

3
OOM killer ฆ่าสิ่งที่มีมากมาย (?) RAM ฟรี
ดูเหมือนว่าฆาตกร OOM จะฆ่าสิ่งต่าง ๆ แม้ว่าจะมี RAM ว่างมากกว่าเพียงพอในระบบของฉัน: (ความละเอียดเต็ม) (ความละเอียดเต็ม) 27 นาทีและกระบวนการ 408 ครั้งต่อมาระบบเริ่มตอบกลับอีกครั้ง ฉันรีบูตเครื่องใหม่ประมาณหนึ่งชั่วโมงหลังจากนั้นไม่นานหลังจากนั้นการใช้หน่วยความจำกลับสู่ปกติ (สำหรับเครื่องนี้) เมื่อตรวจสอบฉันมีกระบวนการที่น่าสนใจสองสามอย่างที่ทำงานบนกล่องของฉัน: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND [...snip...] root 1399 60702042 0.2 482288 1868 ? Sl Feb21 21114574:24 /sbin/rsyslogd -i /var/run/syslogd.pid -c 4 [...snip...] mysql 2022 60730428 5.1 1606028 38760 …
11 linux  centos6  linode  oom 

2
รับดัมพ์หลักของ / การดีบักกระบวนการที่ oom-killer ฆ่า
มีวิธีใดที่จะได้รับดัมพ์หลักหรือสามารถดีบักกระบวนการที่ถูกฆ่าโดย oom-killer ได้หรือไม่? หรือแม้แต่ตั้งค่า oom-killer ให้พยายามฆ่ากระบวนการโดยใช้ ABRT แทน?
10 oom  dump 

3
เหตุใดแอปพลิเคชันในคอนเทนเนอร์ LXC ที่มีหน่วยความจำ จำกัด จึงเขียนไฟล์ขนาดใหญ่ลงดิสก์โดย OOM
EDIT2: ปัญหานี้ดูเหมือนจะมีอยู่ภายใต้ 3.8.0-25-generic # 37-Ubuntu SMP แก้ไข: ฉันแก้ไขคำถามจากชื่อดั้งเดิมของ "ทำไมตัวจัดการ Linux ไม่อยู่ในหน่วยความจำจึงถูกทริกเกอร์โดยการเขียนไปยังไฟล์ที่มีวว?" เพื่อสะท้อนให้เห็นดีขึ้นว่าฉันเป็นห่วงเกี่ยวกับปัญหาทั่วไปที่อธิบายไว้ด้านล่าง: ฉันพบสถานการณ์ที่ลำบากที่ OOM killer เป็นกระบวนการฆ่ายากในคอนเทนเนอร์ LXC ของฉันเมื่อฉันเขียนไฟล์ที่มีขนาดเกินขีด จำกัด หน่วยความจำ (ตั้งค่าเป็น 300MB) ปัญหาไม่เกิดขึ้นเมื่อฉันรันแอปพลิเคชันบนเครื่องเสมือน Xen (EC2 t1.micro) ที่จริงมี RAM 512 MB เท่านั้นดังนั้นดูเหมือนว่าจะมีปัญหาบางอย่างกับไฟล์บัฟเฟอร์ที่เกี่ยวข้องกับขีด จำกัด หน่วยความจำคอนเทนเนอร์ ตัวอย่างง่ายๆฉันสามารถแสดงให้เห็นว่าไฟล์ขนาดใหญ่เขียนโดย dd จะทำให้เกิดปัญหา ปัญหานี้อีกครั้งทำให้เกิดปัญหาแอปพลิเคชันทั้งหมด ฉันต้องการแก้ไขปัญหาทั่วไปของแคชแอปพลิเคชันที่ใหญ่เกินไป ฉันเข้าใจว่าฉันสามารถทำงาน "dd" ได้อย่างไร สถานการณ์: ฉันมีคอนเทนเนอร์ LXC โดยที่ memory.limit_in_bytes ถูกตั้งค่าเป็น 300 MB ฉันพยายาม …
10 linux  ubuntu  lxc  oom  cgroup 

1
กระบวนการ Linux เสียชีวิตแม้ว่าหน่วยความจำจะมีเพียงพอ
ฉันกำลังตรวจสอบว่าเหตุใดกระบวนการของเราสองรายการจึงถูกฆ่าโดยนักฆ่า Linux OOM - แม้ว่าดูเหมือนว่าจะมี RAM เพียงพอและมี SWAP มากมายให้เลือกทั้งสองครั้ง เมื่อฉันตีความมันตามคำตอบนี้คำขอหน่วยความจำแรกที่ขอ 2 ^ 2 = 4 หน้า (16KB) ของหน่วยความจำ (ค่าสถานะการสั่งซื้อ) และต้องการให้มันมาจากโซน "ปกติ" Jan 27 04:26:14 kernel: [639964.652706] java invoked oom-killer: gfp_mask=0x26000c0, order=2, oom_score_adj=0 และถ้าฉันแยกวิเคราะห์ออกอย่างถูกต้องมีพื้นที่มากกว่าพอ: Node 0 Normal free:178144kB min:55068kB low:68832kB high:82600kB ครั้งที่สองมีคำขอเดียวกันในไม่กี่นาทีต่อมา - และดูเหมือนว่าจะมีพื้นที่เพียงพอ แล้วทำไมนักฆ่า OOM ถึงถูกทริกเกอร์? ฉันแยกวิเคราะห์ข้อมูลผิดหรือเปล่า? ระบบนี้เป็น Ubuntu 14.04 …
9 linux  oom 

2
Baffling Memory รั่วไหล ระบบนี้ใช้หน่วยความจำอะไรประมาณ ~ 10GB?
หลังจากใช้เวลาประมาณ 18 ชั่วโมงระบบนี้ใช้หน่วยความจำ ~ 10GB ทำให้ OOM-killer ทำงานเมื่อเราทำงานตามปกติ: # free -h total used free shared buffers cached Mem: 14G 9.4G 5.3G 400K 27M 59M -/+ buffers/cache: 9.3G 5.4G Swap: 0B 0B 0B # cat /proc/meminfo MemTotal: 15400928 kB MemFree: 5567028 kB Buffers: 28464 kB Cached: 60816 kB SwapCached: 0 kB …

5
จะใช้ Java Heap Dumps อย่างเชื่อถือได้อย่างไร
ทีมของฉันประสบปัญหาเมื่อพยายามที่จะทิ้งกองขยะที่ดีซึ่งถูกเรียกโดย OutOfMemoryErrors สำหรับเหตุผลเฉพาะเรากำลังทำการทิ้งด้วย jmap ที่เรียกจากสคริปต์ทุบตีแทนการใช้การตั้งค่าสถานะ HeapDumpOnOutOfMemoryError เราใช้ JVM ขนาด 64 บิตที่มีขนาดฮีปประมาณ 3 GB กองขยะของเราล้มเหลว 90% ของเวลา (คาดเดา) มีอะไรที่เราสามารถทำได้เพื่อปรับปรุงอัตราต่อรองของเราในการทำความสะอาด heap dump ที่เราสามารถใช้เพื่อแก้ไขปัญหาหน่วยความจำได้หรือไม่? ฉันได้อ่านว่า jmap มีปัญหาที่สำคัญใน Java 1.4 แต่ปัญหาเหล่านั้นควรได้รับการแก้ไขเป็นส่วนใหญ่ในขณะนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.