OOM แม้จะมีหน่วยความจำ (แคช)


12

เราได้ทำงานเป็นนักฆ่า 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 total,  8212200k used,  7127440k free,    32776k buffers
Swap:        0k total,        0k used,        0k free,  2394444k cached

...

OOM รายละเอียดจาก syslog:

...
Jun 10 05:45:25 db kernel: [11209156.840462] wal-e invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Jun 10 05:45:25 db kernel: [11209156.840469] wal-e cpuset=/ mems_allowed=0
Jun 10 05:45:25 db kernel: [11209156.840474] Pid: 7963, comm: wal-e Not tainted 3.2.0-43-virtual #68-Ubuntu
Jun 10 05:45:25 db kernel: [11209156.840477] Call Trace:
Jun 10 05:45:25 db kernel: [11209156.840498]  [<ffffffff81119711>] dump_header+0x91/0xe0
Jun 10 05:45:25 db kernel: [11209156.840502]  [<ffffffff81119a95>] oom_kill_process+0x85/0xb0
Jun 10 05:45:25 db kernel: [11209156.840506]  [<ffffffff81119e3a>] out_of_memory+0xfa/0x220
Jun 10 05:45:25 db kernel: [11209156.840511]  [<ffffffff8111f823>] __alloc_pages_nodemask+0x8c3/0x8e0
Jun 10 05:45:25 db kernel: [11209156.840520]  [<ffffffff81216e00>] ? noalloc_get_block_write+0x30/0x30
Jun 10 05:45:25 db kernel: [11209156.840528]  [<ffffffff811566c6>] alloc_pages_current+0xb6/0x120
Jun 10 05:45:25 db kernel: [11209156.840534]  [<ffffffff81116637>] __page_cache_alloc+0xb7/0xd0
Jun 10 05:45:25 db kernel: [11209156.840539]  [<ffffffff81118602>] filemap_fault+0x212/0x3c0
Jun 10 05:45:25 db kernel: [11209156.840553]  [<ffffffff81138c32>] __do_fault+0x72/0x550
Jun 10 05:45:25 db kernel: [11209156.840557]  [<ffffffff8113c2ea>] handle_pte_fault+0xfa/0x200
Jun 10 05:45:25 db kernel: [11209156.840562]  [<ffffffff8100638e>] ? xen_pmd_val+0xe/0x10
Jun 10 05:45:25 db kernel: [11209156.840567]  [<ffffffff81005309>] ? __raw_callee_save_xen_pmd_val+0x11/0x1e
Jun 10 05:45:25 db kernel: [11209156.840571]  [<ffffffff8113d559>] handle_mm_fault+0x269/0x370
Jun 10 05:45:25 db kernel: [11209156.840576]  [<ffffffff8100a56d>] ? xen_force_evtchn_callback+0xd/0x10
Jun 10 05:45:25 db kernel: [11209156.840581]  [<ffffffff8100ad42>] ? check_events+0x12/0x20
Jun 10 05:45:25 db kernel: [11209156.840589]  [<ffffffff8165b3cb>] do_page_fault+0x14b/0x520
Jun 10 05:45:25 db kernel: [11209156.840594]  [<ffffffff81160d64>] ? kmem_cache_free+0x104/0x110
Jun 10 05:45:25 db kernel: [11209156.840600]  [<ffffffff811ba2c8>] ? ep_remove+0xa8/0xc0
Jun 10 05:45:25 db kernel: [11209156.840604]  [<ffffffff811bb133>] ? sys_epoll_ctl+0xb3/0x3d0
Jun 10 05:45:25 db kernel: [11209156.840614]  [<ffffffff81658035>] page_fault+0x25/0x30
Jun 10 05:45:25 db kernel: [11209156.840617] Mem-Info:
Jun 10 05:45:25 db kernel: [11209156.840618] Node 0 DMA per-cpu:
Jun 10 05:45:25 db kernel: [11209156.840622] CPU    0: hi:    0, btch:   1 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840624] CPU    1: hi:    0, btch:   1 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840627] CPU    2: hi:    0, btch:   1 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840629] CPU    3: hi:    0, btch:   1 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840631] Node 0 DMA32 per-cpu:
Jun 10 05:45:25 db kernel: [11209156.840634] CPU    0: hi:  186, btch:  31 usd:  30
Jun 10 05:45:25 db kernel: [11209156.840637] CPU    1: hi:  186, btch:  31 usd:  47
Jun 10 05:45:25 db kernel: [11209156.840639] CPU    2: hi:  186, btch:  31 usd:  15
Jun 10 05:45:25 db kernel: [11209156.840641] CPU    3: hi:  186, btch:  31 usd:   2
Jun 10 05:45:25 db kernel: [11209156.840643] Node 0 Normal per-cpu:
Jun 10 05:45:25 db kernel: [11209156.840646] CPU    0: hi:  186, btch:  31 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840648] CPU    1: hi:  186, btch:  31 usd:  14
Jun 10 05:45:25 db kernel: [11209156.840650] CPU    2: hi:  186, btch:  31 usd:   0
Jun 10 05:45:25 db kernel: [11209156.840653] CPU    3: hi:  186, btch:  31 usd:   1
Jun 10 05:45:25 db kernel: [11209156.840658] active_anon:3616567 inactive_anon:4798 isolated_anon:0
Jun 10 05:45:25 db kernel: [11209156.840660]  active_file:98 inactive_file:168 isolated_file:20
Jun 10 05:45:25 db kernel: [11209156.840661]  unevictable:1597 dirty:73 writeback:0 unstable:0
Jun 10 05:45:25 db kernel: [11209156.840662]  free:16921 slab_reclaimable:17631 slab_unreclaimable:7534
Jun 10 05:45:25 db kernel: [11209156.840663]  mapped:1614529 shmem:1613928 pagetables:124012 bounce:0
Jun 10 05:45:25 db kernel: [11209156.840666] Node 0 DMA free:7888kB min:4kB low:4kB high:4kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:7632kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
Jun 10 05:45:25 db kernel: [11209156.840681] lowmem_reserve[]: 0 4016 15112 15112
Jun 10 05:45:25 db kernel: [11209156.840686] Node 0 DMA32 free:48368kB min:4176kB low:5220kB high:6264kB active_anon:3776804kB inactive_anon:28kB active_file:0kB inactive_file:20kB unevictable:932kB isolated(anon):0kB isolated(file):0kB present:4112640kB mlocked:932kB dirty:0kB writeback:0kB mapped:1458536kB shmem:1458632kB slab_reclaimable:17604kB slab_unreclaimable:8088kB kernel_stack:1872kB pagetables:190616kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:437 all_unreclaimable? yes
Jun 10 05:45:25 db kernel: [11209156.840698] lowmem_reserve[]: 0 0 11095 11095
Jun 10 05:45:25 db kernel: [11209156.840703] Node 0 Normal free:11428kB min:11548kB low:14432kB high:17320kB active_anon:10689464kB inactive_anon:19164kB active_file:528kB inactive_file:652kB unevictable:5456kB isolated(anon):0kB isolated(file):80kB present:11362176kB mlocked:5456kB dirty:292kB writeback:0kB mapped:4999580kB shmem:4997080kB slab_reclaimable:52920kB slab_unreclaimable:22048kB kernel_stack:2584kB pagetables:305432kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:1974 all_unreclaimable? yes
Jun 10 05:45:25 db kernel: [11209156.840715] lowmem_reserve[]: 0 0 0 0
Jun 10 05:45:25 db kernel: [11209156.840720] Node 0 DMA: 2*4kB 3*8kB 1*16kB 3*32kB 3*64kB 3*128kB 2*256kB 1*512kB 2*1024kB 2*2048kB 0*4096kB = 7888kB
Jun 10 05:45:25 db kernel: [11209156.840752] Node 0 DMA32: 5813*4kB 2636*8kB 114*16kB 15*32kB 5*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 0*2048kB 0*4096kB = 48372kB
Jun 10 05:45:25 db kernel: [11209156.840776] Node 0 Normal: 1888*4kB 10*8kB 46*16kB 4*32kB 3*64kB 2*128kB 1*256kB 1*512kB 0*1024kB 1*2048kB 0*4096kB = 11760kB
Jun 10 05:45:25 db kernel: [11209156.840788] 1615243 total pagecache pages
Jun 10 05:45:25 db kernel: [11209156.840790] 0 pages in swap cache
Jun 10 05:45:25 db kernel: [11209156.840801] Swap cache stats: add 0, delete 0, find 0/0
Jun 10 05:45:25 db kernel: [11209156.840803] Free swap  = 0kB
Jun 10 05:45:25 db kernel: [11209156.840805] Total swap = 0kB
Jun 10 05:45:25 db kernel: [11209156.909794] 3934192 pages RAM
Jun 10 05:45:25 db kernel: [11209156.909804] 99282 pages reserved
Jun 10 05:45:25 db kernel: [11209156.909809] 18899146 pages shared
Jun 10 05:45:25 db kernel: [11209156.909811] 2198511 pages non-shared
Jun 10 05:45:25 db kernel: [11209156.909817] [ pid ]   uid  tgid total_vm      rss cpu oom_adj oom_score_adj name
Jun 10 05:45:25 db kernel: [11209156.909835] [  332]     0   332     4308      109   1       0             0 upstart-udev-br
Jun 10 05:45:25 db kernel: [11209156.909845] [  346]     0   346     5384      271   2     -17         -1000 udevd
Jun 10 05:45:25 db kernel: [11209156.909851] [  408]     0   408     5364      174   2     -17         -1000 udevd
...
Jun 10 05:45:25 db kernel: [11209156.910703] [ 7963]   111  7963    17456     2966   0       0             0 wal-e
Jun 10 05:45:25 db kernel: [11209156.910707] [ 7968]   111  7968  1639372     2351   3       0             0 postgres
Jun 10 05:45:25 db kernel: [11209156.910711] [ 7969]   111  7969  1639371     1934   2       0             0 postgres
Jun 10 05:45:25 db kernel: [11209156.910716] Out of memory: Kill process 12443 (postgres) score 418 or sacrifice child
Jun 10 05:45:25 db kernel: [11209156.910733] Killed process 12443 (postgres) total-vm:6555152kB, anon-rss:4600kB, file-rss:6396572kB
Jun 10 05:45:30 db kernel: [11209159.293083] postgres invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Jun 10 05:45:31 db kernel: [11209159.293091] postgres cpuset=/ mems_allowed=0
Jun 10 05:45:31 db kernel: [11209159.293095] Pid: 6508, comm: postgres Not tainted 3.2.0-43-virtual #68-Ubuntu
Jun 10 05:45:31 db kernel: [11209159.293098] Call Trace:
Jun 10 05:45:31 db kernel: [11209159.293111]  [<ffffffff81119711>] dump_header+0x91/0xe0
Jun 10 05:45:31 db kernel: [11209159.293115]  [<ffffffff81119a95>] oom_kill_process+0x85/0xb0
Jun 10 05:45:31 db kernel: [11209159.293119]  [<ffffffff81119e3a>] out_of_memory+0xfa/0x220
...

เราสามารถลองเพิ่มความละเอียดของสิ่งเหล่านี้เป็นประมาณหนึ่งครั้งต่อวินาที แต่จะมีเหตุผลใด ๆ สำหรับ OOM หรือไม่? (เราได้เห็นhttp://bl0rg.krunch.be/oom-frag.htmlแต่เรากำลังทำงานกับหน่วยความจำสัมบูรณ์จำนวนมากขึ้นซึ่งส่วนใหญ่นั้นใช้แคช FS ของเคอร์เนล)

รวมถึงส่วนที่เกี่ยวข้องpostgresql.confด้านล่างของเรา:

shared_buffers = 6GB
effective_cache_size = 8GB


อืม ... 3.2.0-43? อัปเดตเวลา ฆาตกร OOM ผ่านการเปลี่ยนแปลงจำนวนมาก (มากเกินไป) เมื่อเวลาผ่านไป บางรุ่นเป็นจริงค่อนข้างสมองที่ตายเกี่ยวกับการบัญชีสำหรับการใช้งานหน่วยความจำที่ใช้ร่วมกัน ... เหมือน PostgreSQL 9.2 shared_buffersและของที่มีอายุมากกว่า
Craig Ringer

@CraigRinger แต่น่าเสียดายที่มีข้อควรพิจารณาอื่น ๆ รวมถึงการติดกับเคอร์เนลใน Ubuntu 12.04 distro สำหรับ LTS, ความเข้ากันได้, การอัปเดตความปลอดภัย ฯลฯ เราสนใจเพียงแค่มีคนรู้วิธีอธิบายสิ่งที่เกิดขึ้นที่นี่ - ถ้ามันช่วย ไม่สนใจที่จะเปลี่ยนสถานะเดิม / ทำให้ปัญหาหายไป BTW shared_buffersยังคงเป็น PG9.3
ยาง

ใช่shared_buffersยังอยู่ใน 9.3 แต่ไม่มีหน่วยความจำที่แชร์ POSIXใน 9.3 อีกต่อไป มันถูกแทนที่ด้วยmmap()edภูมิภาคที่ไม่ระบุชื่อ ที่ได้รับปัญหาการตั้งค่าเคอร์เนล icky และปัญหาการตรึงแม้ว่าฉันสงสัยว่ามันจะทำให้นักฆ่า OOM สับสนน้อยลง
Craig Ringer

1
อาจเป็นซ้ำกับserverfault.com/questions/288319/…ซึ่งมีคำตอบที่เป็นไปได้
richvdh

คำตอบ:


4

ดูเหมือนว่าคุณ (และฉันในกรณีที่มีอาการคล้ายกันมาก) มีหน่วยความจำหมดจริงและสับสนโดยcachedตัวเลข

เห็นได้ชัดว่ามีบางกรณีที่Linux ไม่ได้เพิ่มดิสก์แคชขนาดใหญ่เมื่อความต้องการหน่วยความจำเพิ่มขึ้น

โดยเฉพาะอย่างยิ่ง (ฉันไม่เข้าใจว่าทำไม), postgres ' shared_buffersอาจถูกรายงานภายใต้ "แคช" (แคชของหน้า) ในกรณีของคุณ6481852k cachedในtopตรงบรรทัดนี้ในบันทึก OOM-ฆาตกร:

Jun 10 05:45:25 db kernel: [11209156.840788] 1615243 total pagecache pages

(1615243 * 4KB ~ = 6481852k) - หมายถึงแคชหน้าไม่ได้ลดลงอย่างแน่นอนก่อนที่จะเรียกใช้ OOM-killer

แต่มีหน้าไฟล์ที่สำรองข้อมูลน้อย (ฉันถือว่าactive_file:98 inactive_file:168คล้ายกับ / proc / meminfo ของActive (ไฟล์) / ไม่ใช้งาน (ไฟล์) ) ดังนั้นมันจึงไม่ใช่หน้าที่ทิ้งเราที่เรารู้จักและชื่นชอบ

โพสต์ที่https://www.depesz.com/2012/06/09/how-much-ram-is-postgresql-using/แสดงให้เห็นถึงตัวอย่างเซสชันที่ปิด postgres นำไปสู่การลด "แคช" ตามขนาดของshared_buffers(เลื่อนไปที่"และส่วนใหญ่มาจากแคชของดิสก์ - ตามที่คาดไว้เพราะใช้สำหรับ shared_buffers" ) - น่าเสียดายที่ไม่ได้ระบุรุ่น postgres หรือเคอร์เนลที่ใช้สำหรับการทดสอบ

ฉันใช้ 3.13.0-67 x86_64 กับ PG 9.3 ใน 9.3 พวกเขาเปลี่ยนจากการใช้หน่วยความจำที่ใช้ร่วมกัน Sys V ( shmget) เป็นแบบไม่ระบุชื่อmmap(...R+W, MAP_SHARED|MAP_ANONYMOUS|MAP_HASSEMAPHORE...)+fork() (ใน 9.4 สิ่งนี้สามารถกำหนดค่าได้ผ่านdynamic_shared_memory_type ) แต่ฉันไม่พบคำอธิบายใด ๆ ว่าทำไม mmap () เหล่านี้ควรปรากฏใน "แคช" และทำไมเพียงhttps://access.redhat.com/solutions/406773ที่ระบุว่า "แคช: หน่วยความจำใน pagecache (Diskcache และหน่วยความจำที่ใช้ร่วมกัน) "

เนื่องจากมีหน่วยความจำที่แชร์หลายประเภทฉันทั้งรู้แจ้งและสับสน ...


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

8
  1. สำหรับความรักของทุกอย่างที่ดีที่สุดในโลก, พื้นที่ swap กำหนดค่าบนเซิร์ฟเวอร์ของคุณ คุณต้องการจริงๆพื้นที่
    swap ฉันไม่ได้เป็นคนเดียวที่กล่าวว่าดังนั้น , มันสวยมากจริงสากลรอบ ๆ ที่นี่ (<- ทั้งสามลิงค์)
    แน่นอนคุณควรมี RAM เพียงพอที่เซิร์ฟเวอร์ฐานข้อมูลของคุณไม่ได้แลกเปลี่ยนเป็นประจำ - หากคุณไม่มีวิธีแก้ปัญหาคือเงิน (ซึ่งคุณนำผู้ขายของคุณมาใช้เพื่อรับ RAM เพิ่ม) .

  2. เนื่องจากขณะนี้คุณมี RAM เพียงพอและสลับกับการใช้งานถ้าอะไรผิดพลาดคุณสามารถปิดการใช้งานนักฆ่า OOM (โดยการปิดการใช้งานหน่วยความจำ overcommit) เหมือนคน Postgres บอกให้คุณ
    (คุณสามารถใช้โซลูชันสำรองของพวกเขาและแจ้งให้ OOM-Killer ทราบว่าจะไม่ฆ่า Postgres แต่คุณเพียงแค่เล่นรูเล็ตรัสเซียกับกระบวนการอื่น ๆ ในระบบของคุณ ... )

  3. (อุปกรณ์เสริม) เขียนคำตอบบนเซิร์ฟเวอร์ความผิดรายละเอียดว่าทำไมการทำงานเริ่มต้นในลินุกซ์มากที่สุดคือไม่ดีผิดและละเมิดข้อกำหนด POSIX สำหรับวิธี malloc () ควรจะประพฤติ ทำซ้ำจนกระทั่งทุกคนเบื่อกับการได้ยิน


นอกจากนี้โปรดทราบว่าหน่วยความจำแคชของเคอร์เนลพร้อมใช้งานสำหรับ postgres (หรือแอปพลิเคชันอื่น ๆ ) ที่จะใช้ - คุณควรคำนึงถึงว่าหน่วยความจำว่าง / พร้อมใช้งานในการคำนวณของคุณ

ถ้าฉันต้องเสี่ยงต่อการเดาว่าเกิดอะไรขึ้นที่นี่ฉันจะบอกว่าคุณมีคิวรีที่ซับซ้อน Postgres กำลังร้องขอ RAM ให้รันและแทนที่จะพูดว่า "ฉันไม่มี RAM นั้น" Linux บอก Postgres "แน่นอนว่า คุณสามารถมีได้ "
จากนั้นเมื่อ Postgres พยายามใช้ RAM จริง ๆ(เพราะถูกกล่าวหา) เนื่องจาก Linux รู้ตัวว่าไม่ได้มี RAM ก็สัญญาไว้กับ Postgres (เพราะมัน overcommitted) - นักฆ่า OOM บอกให้เพิ่มแรมและทำหน้าที่ฆ่าโปรแกรมโดยใช้ หน่วยความจำมากที่สุด - เซิร์ฟเวอร์ฐานข้อมูลของคุณ

Postgres เป็นโปรแกรมที่ออกแบบมาอย่างดี หากมีการบอกว่ามันไม่สามารถมี RAM ได้ก็จะขอให้มันจัดการอย่างสง่างาม (โดยการทำน้อยหรือยกเลิกด้วยข้อความไปยังผู้ใช้)


4
ขอบคุณสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการแลกเปลี่ยน แต่ไม่ตอบคำถามของฉันทำไมนี้เกิดขึ้นในสถานที่แรก ใช่ฉันเข้าใจหลักฐานขั้นพื้นฐานที่ว่าลินุกซ์มีข้อผิดพลาดเป็นค่าเริ่มต้นและ OOM คือเมื่อเราไม่มี RAM - ฉันสามารถระบุคำถามนี้ได้มากในคำถามเดิมของฉัน แต่คำถามก็คือทำไมมันถึงเตะเมื่อฉันยังมี RAM มากมาย (ส่วนใหญ่มันแค่นั่งในแคช FS)? สมมติว่าฉันไม่สนใจที่จะเปลี่ยนแปลงอะไรเลย - นักฆ่า OOM นั้นดีตราบใดที่ฉันเข้าใจว่าทำไมมันถึงถูกทริกเกอร์
ยาง

2
หลังจากตรวจสอบลิงก์แล้วมีข้อยืนยันมากมายที่ไม่มีหลักฐานสนับสนุนหรือคำอธิบายทางเทคนิคที่เป็นรูปธรรม มีสภาพแวดล้อม Linux หลายตัวที่ swap ไม่ได้เป็นตัวเลือก (ตัวอย่าง: อย่ามองข้าม Live CD ที่ไม่มีพาร์ติชั่น local swap ที่มีอยู่แล้วเพื่อนำมาใช้ซ้ำ) เราไม่สนใจที่จะเปิดใช้งาน swappiness ตามประสบการณ์และสภาพแวดล้อมของเราเอง - เราอยากมี OOM คำตอบสำหรับคำถามเดิมจะได้รับการชื่นชม
ยาง

1
@ ใช่ฉันคิดว่าหากคุณกำลังสร้างเซิร์ฟเวอร์สำหรับ Postgres คุณจะต้องทำตามคำแนะนำของโครงการ Postgres คำตอบของฉันคือทำสิ่งที่พวกเขาบอกคุณ (ปิด OOM killer) หากคุณต้องการที่จะรอและดูว่ามีใครเสนอคำตอบที่แตกต่างออกไปคุณมีอิสระที่จะทำเช่นนั้น แต่ฉันไม่สะดวกที่จะเสนอวิธีแก้ปัญหาอื่น ๆ - ในความคิดของฉัน OOM killer ไม่ดีผิดและละเมิด POSIX อาจยอมรับได้บนเดสก์ท็อป / worstation แต่การปิดใช้งานบนเซิร์ฟเวอร์คือ IMO สิ่งที่ต้องทำ
voretaq7

2
ฉันได้พบกับสถานการณ์นี้บนเซิร์ฟเวอร์ที่มี swap และหลังจากอิ่มตัวหน่วยความจำที่มีอยู่ + swap OOM killer ถูกใช้แทนเคอร์เนลเพื่อเรียกคืนหน่วยความจำ "แคช" ซึ่งเห็นได้ชัดว่าล็อคอย่างใด ฉันไม่เคยแก้ไขปัญหานี้ แต่คำถามเดิมของ @ Yang ไม่ได้รับคำตอบที่นี่
แพทริค

2
Swap ไม่ใช่คำตอบเพียง แต่ทำให้ปัญหาปรากฏขึ้นในภายหลัง คุณต้องสลับเมื่อ RAM เต็มและคุณต้องใช้ OOM Killer เมื่อ RAM + swap เต็ม หากจำนวนการแลกเปลี่ยนเป็นศูนย์คุณต้องใช้ OOM Killer เร็วกว่า แต่คุณไม่สามารถหลีกเลี่ยง OOM Killer ด้วยการสลับ
Mikko Rantalainen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.