ืื•ื™ืคืฉื˜ืขืœืŸ ืื•ื™ืก-ืคื•ืŸ-ื–ื›ึผืจื•ืŸ ืงื™ืœืขืจ ืื™ืŸ Linux ืคึฟืึทืจ ืคึผืึธืกื˜ื’ืจืขืกืงื™ื•-ืขืœ

ืื•ื™ืคืฉื˜ืขืœืŸ ืื•ื™ืก-ืคื•ืŸ-ื–ื›ึผืจื•ืŸ ืงื™ืœืขืจ ืื™ืŸ Linux ืคึฟืึทืจ ืคึผืึธืกื˜ื’ืจืขืกืงื™ื•-ืขืœ

ื•ื•ืขืŸ ืื™ืŸ Linux ื“ืขืจ ื“ืึทื˜ืึทื‘ื™ื™ืก ืกืขืจื•ื•ืขืจ ืขื ื“ื™ื’ื˜ ื–ื™ืš ืื•ืžื’ืขืจื™ื›ื˜, ืื•ืŸ ื“ื™ ืกื™ื‘ื” ื“ืึทืจืฃ ื‘ืึทืฉื˜ื™ืžื˜ ื•ื•ืขืจืŸ. ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืขื˜ืœืขื›ืข ืกื™ื‘ื•ืช. ืœืžืฉืœ, SIGSEGV - ื“ื•ืจื›ืคืึทืœ ืจืขื›ื˜ ืฆื• ืึท ื–ืฉื•ืง ืื™ืŸ ื“ื™ ื‘ืึทืงืขื ื“ ืกืขืจื•ื•ืขืจ. ืื‘ืขืจ ื“ืึธืก ืื™ื– ื–ืขืœื˜ืŸ. ืจื•ื‘ึฟ ืึธืคื˜ ืื™ืจ ื ืึธืจ ืœื•ื™ืคืŸ ืื•ื™ืก ืคื•ืŸ ื“ื™ืกืง ืคึผืœืึทืฅ ืึธื“ืขืจ ื–ื›ึผืจื•ืŸ. ืื•ื™ื‘ ืื™ืจ ืœื•ื™ืคืŸ ืื•ื™ืก ืคื•ืŸ ื“ื™ืกืง ืคึผืœืึทืฅ, ืขืก ืื™ื– ื‘ืœื•ื™ื– ืื™ื™ืŸ ื•ื•ืขื’ ืื•ื™ืก - ืคืจื™ื™ ืคึผืœืึทืฅ ืื•ืŸ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก.

ืื•ื™ืก-ืคื•ืŸ-ื–ื™ืงืึธืจืŸ ืงื™ืœืœืขืจ

ื•ื•ืขืŸ ื“ื• ืกืขืจื•ื•ื™ืจืขืจ ืื“ืขืจ ื“ืขืจ ืคึผืจืึธืฆืขืก ืœื•ื™ืคื˜ ืื•ื™ืก ืคื•ืŸ ื–ื›ึผืจื•ืŸ, Linux ื“ืขืจ "ืื•ื™ืก-ืคื•ืŸ-ื–ื›ืจื•ืŸ ืงื™ืœืขืจ" ืึธืคืคืขืจื˜ ืฆื•ื•ื™ื™ ืœื™ื™ื–ื•ื ื’ืขืŸ: ืงืจืึทื›ืŸ ื“ืึธืก ื’ืึทื ืฆืข ืกื™ืกื˜ืขื ืึธื“ืขืจ ืขื ื“ื™ืงืŸ ื“ืขื ืคึผืจืึธืฆืขืก (ืึทืคึผืœื™ืงืึทืฆื™ืข) ื•ื•ืึธืก ืขืกื˜ ืื•ื™ืฃ ื–ื›ึผืจื•ืŸ. ืขืก ืื™ื– ื‘ืขืกืขืจ, ืคึฟืึทืจืฉื˜ื™ื™ื˜ ื–ื™ืš, ืฆื• ืขื ื“ื™ืงืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ื“ืขื ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ืคึฟื•ืŸ ืงืจืึทื›ืŸ. ืื™ืŸ ืงื•ืจืฆืŸ, ื“ืขืจ "ืื•ื™ืก-ืคื•ืŸ-ื–ื›ืจื•ืŸ ืงื™ืœืขืจ" ืื™ื– ืึท ืคึผืจืึธืฆืขืก ื•ื•ืึธืก ืขื ื“ื™ืงืŸ ืึทืŸ ืึทืคึผืœื™ืงืึทืฆื™ืข ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ื“ืขื ืงืขืจื ืขืœ ืคึฟื•ืŸ ืงืจืึทื›ืŸ. ืขืก ืงืจื‘ืŸ ื“ื™ ืึทืคึผืœื™ืงืึทืฆื™ืข ืฆื• ื”ืึทืœื˜ืŸ ื“ืขื ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ืื™ืŸ ื’ืึทื ื’. ืœืึธืžื™ืจ ืขืจืฉื˜ ื“ื™ืกืงื•ื˜ื™ืจืŸ ื•ื•ื™ OOM ืึทืจื‘ืขื˜ ืื•ืŸ ื•ื•ื™ ืขืก ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ, ืื•ืŸ ื“ืขืจื ืึธืš ืงื•ืงืŸ ื•ื•ื™ ื“ืขืจ OOM ืงื™ืœืขืจ ื‘ืึทืฉืœื™ืกื˜ ื•ื•ืขืœื›ืข ืึทืคึผืœื™ืงืึทืฆื™ืขืก ืฆื• ืขื ื“ื™ืงืŸ.

ืื™ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื”ื•ื™ืคึผื˜ ืื•ื™ืคื’ืึทื‘ืŸ Linux โ€” ืฆื•ื˜ื™ื™ืœืŸ ื–ื›ึผืจื•ืŸ ืฆื• ืคึผืจืึธืฆืขืกืŸ ื•ื•ืขืŸ ื–ื™ื™ ื‘ืขื˜ืŸ ืขืก. ื˜ื™ืคึผื™ืฉืขืจื•ื•ื™ื™ึทื–, ื‘ืขื˜ ืึท ืคึผืจืึธืฆืขืก ืึธื“ืขืจ ืึทืคึผืœื™ืงืึทืฆื™ืข ื–ื›ึผืจื•ืŸ ืคึฟื•ืŸ ื“ืขืจ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ืึธื‘ืขืจ ื ื™ืฆื˜ ืขืก ื ื™ืฉื˜ ืื™ื ื’ืึทื ืฆืŸ. ืื•ื™ื‘ ื“ื™ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ืึทืœืึธืงื™ืจื˜ ื–ื›ึผืจื•ืŸ ืฆื• ืึทืœืขืžืขืŸ ื•ื•ืึธืก ื‘ืขื˜ ืขืก ืึธื‘ืขืจ ืคึผืœืึทื ื™ืจื˜ ื ื™ืฉื˜ ืฆื• ื ื•ืฆืŸ ืขืก, ื•ื•ืขื˜ ื“ื™ ืกื™ืกื˜ืขื ืฉื ืขืœ ืื•ื™ืกืœืึธืคึฟืŸ ืคึฟื•ืŸ ื–ื›ึผืจื•ืŸ, ืื•ืŸ ื“ื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ืงืจืึทื›ืŸ. ื›ึผื“ื™ ื“ืึธืก ืฆื• ืคึฟืึทืจืžื™ื™ึทื“ืŸ, ืจืขื–ืขืจื•ื•ื™ืจื˜ ื“ื™ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ืึท ืคึผืจืึธืฆืขืก ืึธื‘ืขืจ ืึทืœืึธืงื™ืจื˜ ืขืก ื ื™ืฉื˜ ื˜ืึทืงืข. ื–ื›ึผืจื•ืŸ ื•ื•ืขืจื˜ ืึทืœืึธืงื™ืจื˜ ื ืึธืจ ื•ื•ืขืŸ ืึท ืคึผืจืึธืฆืขืก ืคึผืœืึทื ื™ืจื˜ ืขืก ื˜ืึทืงืข ืฆื• ื ื•ืฆืŸ. ืžืึทื ื˜ืฉืžืึธืœ ื”ืึธื˜ ื“ื™ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ื ื™ืฉื˜ ืงื™ื™ืŸ ืคึฟืจืฒึทืข ื–ื›ึผืจื•ืŸ, ืึธื‘ืขืจ ื–ื™ ืึทืœืึธืงื™ืจื˜ ื–ื›ึผืจื•ืŸ ืฆื• ืึท ืคึผืจืึธืฆืขืก, ืื•ืŸ ื•ื•ืขืŸ ื“ืขืจ ืคึผืจืึธืฆืขืก ื“ืึทืจืฃ ืขืก, ืึทืœืึธืงื™ืจื˜ ื“ื™ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ืขืก ืื•ื™ื‘ ื–ื™ ืงืขืŸ. ื“ืขืจ ื—ืกืจื•ืŸ ืื™ื– ืึทื– ืžืึทื ื˜ืฉืžืึธืœ ืจืขื–ืขืจื•ื•ื™ืจื˜ ื“ื™ ืึธืคึผืขืจื™ืจืŸ ืกื™ืกื˜ืขื ื–ื›ึผืจื•ืŸ, ืึธื‘ืขืจ ื•ื•ืขืŸ ื ื•ื™ื˜ื™ืง, ืื™ื– ื ื™ืฉื˜ืึธ ืงื™ื™ืŸ ืคึฟืจืฒึทืข ื–ื›ึผืจื•ืŸ, ื•ื•ืึธืก ืคึฟืึทืจืื•ืจื–ืึทื›ื˜ ืึท ืกื™ืกื˜ืขื ืงืจืึทืš. OOM ืฉืคึผื™ืœื˜ ืึท ืฉืœื™ืกืœ ืจืึธืœืข ืื™ืŸ ื“ืขื ืกืฆืขื ืึทืจ, ืขื ื“ื™ืงื ื“ื™ืง ืคึผืจืึธืฆืขืกืŸ ื›ึผื“ื™ ืฆื• ืคึฟืึทืจืžื™ื™ึทื“ืŸ ื“ืขื ืงืขืจื ืขืœ ืคึฟื•ืŸ ืคึผืึทื ื™ืงื™ืจืŸ. ื•ื•ืขืŸ ื“ืขืจ PostgreSQL ืคึผืจืึธืฆืขืก ื•ื•ืขืจื˜ ื’ืขืฆื•ื•ืื•ื ื’ืขืŸ ืขื ื“ื™ืงื˜, ื“ืขืจืฉืฒึทื ื˜ ื“ื™ ืคึฟืึธืœื’ื ื“ื™ืงืข ืžืขืกืขื“ื–ืฉ ืื™ืŸ ืœืึธื’:

Out of Memory: Killed process 12345 (postgres).

ืื•ื™ื‘ ื“ื™ ืกื™ืกื˜ืขื ืื™ื– ื ื™ื“ืขืจื™ืง ืื•ื™ืฃ ื–ื›ึผืจื•ืŸ ืื•ืŸ ืขืก ืงืขืŸ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืคืจื™ื™, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื™ื– ื’ืขืจื•ืคืŸ out_of_memory. ืื™ืŸ ื“ืขื ื‘ื™ื ืข, ื–ื™ ื”ืื˜ ื‘ืœื•ื™ื– ืื™ื™ืŸ ื–ืึทืš ืฆื• ื˜ืึธืŸ - ืคืึทืจืขื ื“ื™ืงืŸ ืื™ื™ืŸ ืึธื“ืขืจ ืžืขืจ ืคึผืจืึทืกืขืกืึทื–. ื–ืึธืœ OOM-killer ืคืึทืจืขื ื“ื™ืงืŸ ื“ืขื ืคึผืจืึธืฆืขืก ื’ืœื™ื™ืš ืึธื“ืขืจ ืงืขืŸ ืขืก ื•ื•ืึทืจื˜ืŸ? ื“ืึธืš, ื•ื•ืขืŸ ืึธื•ื˜_ืคื•ืŸ_ืžืขืžืึธืจื™ ืื™ื– ื’ืขืจื•ืคืŸ, ื“ืึธืก ืื™ื– ืจืขื›ื˜ ืฆื• ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึทืŸ I/O ืึธืคึผืขืจืึทืฆื™ืข ืึธื“ืขืจ ืคึผื™ื™ื“ื–ืฉื™ื ื’ ืฆื• ื“ื™ืกืง. ื“ืขืจื™ื‘ืขืจ, ื“ืขืจ OOM ืงื™ืœืœืขืจ ืžื•ื–ืŸ ืขืจืฉื˜ืขืจ ื“ื•ืจื›ืคื™ืจืŸ ื˜ืฉืขืงืก ืื•ืŸ, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื–ื™ื™, ื‘ืึทืฉืœื™ืกืŸ ืึทื– ื“ืขืจ ืคึผืจืึธืฆืขืก ื“ืึทืจืฃ ื–ื™ื™ืŸ ื˜ืขืจืžืึทื ื™ื™ื˜ื™ื“. ืื•ื™ื‘ ืึทืœืข ื“ื™ ื˜ืฉืขืงืก ืื•ื ื˜ืŸ ื–ืขื ืขืŸ positive, OOM ื•ื•ืขื˜ ืคืึทืจืขื ื“ื™ืงืŸ ื“ืขื ืคึผืจืึธืฆืขืก.

ืคึผืจืึธืฆืขืก ืกืขืœืขืงืฆื™ืข

ื•ื•ืขืŸ ื–ื›ึผืจื•ืŸ ืœื•ื™ืคื˜ ืื•ื™ืก, ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืื™ื– ื’ืขืจื•ืคืŸ out_of_memory(). ืขืก ื”ืื˜ ืึท ืคึฟื•ื ืงืฆื™ืข select_bad_process(), ื•ื•ืึธืก ื‘ืืงื•ืžื˜ ืึทืŸ ืืคืฉืืฆื•ื ื’ ืคื•ืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข badness(). ื“ืขืจ "ืขืจื’ืกื˜" ืคึผืจืึธืฆืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื˜ืึทืจื’ืขื˜ืขื“. ืคึฟื•ื ืงืฆื™ืข badness() ืกืึทืœืขืงืฅ ืึท ืคึผืจืึธืฆืขืก ืœื•ื™ื˜ ื–ื™ื›ืขืจ ื›ึผืœืœื™ื.

  1. ื“ืขืจ ืงืขืจืŸ ื“ืึทืจืฃ ืขื˜ืœืขื›ืข ืžื™ื ื™ืžื•ื ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ื–ื™ืš.
  2. ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืคืจื™ื™ึทืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื–ื›ึผืจื•ืŸ.
  3. ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ืคึผืจืึทืกืขืกืึทื– ื•ื•ืึธืก ื ื•ืฆืŸ ืงืœื™ื™ืŸ ื–ื›ึผืจื•ืŸ.
  4. ืžื™ื ื™ืžื•ื ืคึผืจืึทืกืขืกืึทื– ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื’ืขืขื ื“ื™ืงื˜.
  5. ืงืึธืžืคึผืœืขืงืก ืึทืœื’ืขืจื™ื“ืึทืžื– ื•ื•ืึธืก ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ื’ื™ื›ืขืจ ืคื•ืŸ ืงืึทืžืคึผืœื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ ืคึผืจืึทืกืขืกืึทื– ื•ื•ืึธืก ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื–ื™ืš ื•ื•ื™ืœ ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ.

ื ืึธืš ืคืึทืจืขื ื“ื™ืงืŸ ืึทืœืข ื“ื™ ื˜ืฉืขืงืก, OOM ื™ื’ื–ืึทืžืึทื ื– ื“ื™ ื›ืขื–ืฉื‘ืŸ (oom_score). OOM ืึทืคึผื•ื™ื ื˜ืžืึทื ืฅ oom_score ื™ืขื“ืขืจ ืคึผืจืึธืฆืขืก, ืื•ืŸ ื“ืขืžืึธืœื˜ ืžืึทืœื˜ืึทืคึผืœื™ื™ื– ื“ืขื ื•ื•ืขืจื˜ ื“ื•ืจืš ื“ื™ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ื–ื›ึผืจื•ืŸ. ืคึผืจืึทืกืขืกืึทื– ืžื™ื˜ ื’ืจืขืกืขืจืข ื•ื•ืึทืœื•ืขืก ื–ืขื ืขืŸ ืžืขืจ ืžืกืชึผืžื ืฆื• ืคืึทืœืŸ ืงืึธืจื‘ืŸ ืฆื• ื“ื™ OOM Killer. ืคึผืจืึทืกืขืกืึทื– ืคึฟืึทืจื‘ื•ื ื“ืŸ ืžื™ื˜ ื“ืขืจ ื•ื•ืึธืจืฆืœ ื‘ืึทื ื™ืฆืขืจ ื”ืึธื‘ืŸ ืึท ื ื™ื“ืขืจื™ืงืขืจ ื›ืขื–ืฉื‘ืŸ ืื•ืŸ ื–ืขื ืขืŸ ื•ื•ื™ื™ื ื™ืงืขืจ ืžืกืชึผืžื ืฆื• ื–ื™ื™ืŸ ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ.

postgres=# SELECT pg_backend_pid();
pg_backend_pid 
----------------
    3813
(1 row)

ื“ื™ Postgres ืคึผืจืึธืฆืขืก ืฉื™ื™ึทืŸ ืื™ื– 3813, ืึทื–ื•ื™ ืื™ืŸ ืืŸ ืื ื“ืขืจ ืฉืึธืœ ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื‘ืึทืงื•ืžืขืŸ ื“ื™ ื›ืขื–ืฉื‘ืŸ ืžื™ื˜ ื“ืขื ืงืขืจืŸ ืคึผืึทืจืึทืžืขื˜ืขืจ oom_score:

vagrant@vagrant:~$ sudo cat /proc/3813/oom_score
2

ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ืขืœืŸ OOM-Killer ืฆื• ื˜ื™ื™ื˜ืŸ ื“ืขื ืคึผืจืึธืฆืขืก ืื™ืŸ ืึทืœืข, ืขืก ืื™ื– ืืŸ ืื ื“ืขืจ ืงืขืจืŸ ืึธืคึผืฆื™ืข: oom_score_adj. ืœื™ื™ื’ ืึท ื’ืจื•ื™ืก ื ืขื’ืึทื˜ื™ื•ื• ื•ื•ืขืจื˜ ืฆื• ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ื’ื™ื›ืขืจ ืคื•ืŸ ืงืึทืžืคึผืœื™ื˜ื™ื ื’ ืึท ืคึผืจืึธืฆืขืก ืื™ืจ ื•ื•ืขืจื˜.

sudo echo -100 > /proc/3813/oom_score_adj

ืฆื• ืฉื˜ืขืœืŸ ืึท ื•ื•ืขืจื˜ oom_score_adj, ืฉื˜ืขืœืŸ OOMScoreAdjust ืื™ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ื‘ืœืึธืง:

[Service]
OOMScoreAdjust=-1000

ืึธื“ืขืจ ื ื•ืฆืŸ oomprotect ืื™ืŸ ืึท ืงืึธืœืขืงื˜ื™ื•ื• rcctl.

rcctl set <i>servicename</i> oomprotect -1000

ืงืจืึทืคื˜ ื˜ืขืจืžืึทื ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ืคึผืจืึธืฆืขืก

ื•ื•ืขืŸ ืื™ื™ื ืขืจ ืึธื“ืขืจ ืžืขืจ ืคึผืจืึทืกืขืกืึทื– ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ, OOM-Killer ืจื•ืคื˜ ื“ื™ ืคึฟื•ื ืงืฆื™ืข oom_kill_task(). ื“ืขื ืคึฟื•ื ืงืฆื™ืข ืกืขื ื“ื– ืึท ื˜ืขืจืžืึทื ื™ื™ืฉืึทืŸ ืกื™ื’ื ืึทืœ ืฆื• ื“ืขื ืคึผืจืึธืฆืขืก. ืื™ืŸ ืคืึทืœ ืคื•ืŸ ื–ื™ืงืึธืจืŸ ื“ื•ื—ืง oom_kill() ืจื•ืคื˜ ื“ืขื ืคึฟื•ื ืงืฆื™ืข ืฆื• ืฉื™ืงืŸ ืึท SIGKILL ืกื™ื’ื ืึทืœ ืฆื• ื“ืขื ืคึผืจืึธืฆืขืก. ื ืึธื ื–ืึธื’ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืฆื• ื“ื™ ืงืขืจืŸ ืงืœืึธืฅ.

Out of Memory: Killed process [pid] [name].

ื•ื•ื™ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ OOM-Killer

ะ’ Linux ืื™ืจ ืงืขื ื˜ ืึทืงื˜ื™ื•ื•ื™ืจืŸ ืึธื“ืขืจ ื“ื™ืึทืงื˜ื™ื•ื•ื™ืจืŸ OOM-Killer (ื›ืึธื˜ืฉ ื“ื™ ืœืขืฆื˜ืข ืื™ื– ื ื™ืฉื˜ ืจืขืงืึธืžืขื ื“ื™ืจื˜). ืฆื• ืึทืงื˜ื™ื•ื•ื™ืจืŸ ืึธื“ืขืจ ื“ื™ืึทืงื˜ื™ื•ื•ื™ืจืŸ ืขืก, ื ื™ืฆื˜ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ vm.oom-kill. ืฆื• ื’ืขื‘ืŸ OOM-Killer ืื™ืŸ ืจื•ื ื˜ื™ืžืข, ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ sysctl.

sudo -s sysctl -w vm.oom-kill = 1

ืฆื• ื“ื™ืกื™ื™ื‘ืึทืœ OOM-Killer, ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื•ื•ืขืจื˜ 0 ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื‘ืึทืคึฟืขืœ:

sudo -s sysctl -w vm.oom-kill = 0

ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ื“ืขื ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื ื™ื˜ ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื•ื™ืฃ ืื™ื™ื‘ื™ืง, ืึธื‘ืขืจ ื‘ืœื•ื™ื– ื‘ื™ื– ื“ืขืจ ืขืจืฉื˜ืขืจ ืจืขื‘ืึธืึธื˜. ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืžืขืจ ืคึผืขืจืกื™ืกื˜ืึทื ืก, ืœื™ื™ื’ืŸ ื“ืขื ืฉื•ืจื” ืฆื• ื“ืขืจ ื˜ืขืงืข /etc/sysctl.conf:

echo vm.oom-kill = 1 >>/etc/sysctl.conf

ืืŸ ืื ื“ืขืจ ื•ื•ืขื’ ืฆื• ื’ืขื‘ืŸ ืื•ืŸ ื“ื™ืกื™ื™ื‘ืึทืœ ืื™ื– ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง panic_on_oom. ื“ื™ ื•ื•ืขืจื˜ ืงืขื ืขืŸ ืฉื˜ืขื ื“ื™ืง ื–ื™ื™ืŸ ืึธืคึผื’ืขืฉื˜ืขืœื˜ /proc.

$ cat /proc/sys/vm/panic_on_oom
0

ืื•ื™ื‘ ืื™ืจ ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืขืจื˜ ืฆื• 0, ื•ื•ืขืŸ ื“ื™ ื–ื›ึผืจื•ืŸ ืœื•ื™ืคื˜ ืื•ื™ืก, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงื™ื™ืŸ ืงืขืจื ืขืœ ืคึผืึทื ื™ืง.

$ echo 0 > /proc/sys/vm/panic_on_oom

ืื•ื™ื‘ ืื™ืจ ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืขืจื˜ ืฆื• 1, ื•ื•ืขืŸ ื“ืขืจ ื–ื›ึผืจื•ืŸ ืœื•ื™ืคื˜ ืื•ื™ืก, ืึท ืงืขืจืŸ ืคึผืึทื ื™ืง ื•ื•ืขื˜ ืคึผืึทืกื™ืจืŸ.

echo 1 > /proc/sys/vm/panic_on_oom

OOM-Killer ืงืขืŸ ืžืขืŸ ืื ืฆื™ื ื“ืŸ ืื•ืŸ ืื•ื™ืกืœืขืฉืŸ, ื•ื•ื™ ืžื™ืจ ื”ืื‘ืŸ ืฉื•ื™ืŸ ื“ืขืจืžืื ื˜. Linux ืงืขืŸ ืจืขื–ืขืจื•ื•ื™ืจืŸ ืžืขืจ ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ืคึผืจืึธืฆืขืกืŸ ื•ื•ื™ ืื™ื– ืคึฟืึทืจืึทืŸ, ืึธื‘ืขืจ ื ื™ืฉื˜ ื˜ืึทืงืข ืฆื•ื˜ื™ื™ืœืŸ ืขืก, ืื•ืŸ ื“ืึธืก ื ืึทื˜ื•ืจ ื•ื•ืขืจื˜ ืงืึธื ื˜ืจืึธืœื™ืจื˜ ื“ื•ืจืš ืึท ืงืขืจื ืขืœ ืคึผืึทืจืึทืžืขื˜ืขืจ Linuxื“ื™ ื•ื•ืขืจื™ืึทื‘ืœืข ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ืขื. vm.overcommit_memory.

ืื™ืจ ืงืขื ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื•ืึทืœื•ืขืก ืคึฟืึทืจ ืขืก:

0: ื“ืขืจ ืงืขืจื ืขืœ ืืœื™ื™ืŸ ื‘ืึทืฉืœื™ืกื˜ ืฆื™ ืฆื• ืจืขื–ืขืจื•ื•ื™ืจืŸ ืฆื• ืคื™ืœ ื–ื›ึผืจื•ืŸ. ื“ืึธืก ืื™ื– ื“ืขืจ ืคืขืœื™ืงื™ื™ื˜ ื•ื•ืขืจื˜ ืื™ืŸ ืจื•ื‘ึฟ ื•ื•ืขืจืกื™ืขืก. Linux.
1: ื“ืขืจ ืงืขืจืŸ ื•ื•ืขื˜ ืฉื˜ืขื ื“ื™ืง ืจืขื–ืขืจื•ื•ื™ืจืŸ ืขืงืกื˜ืจืข ื–ื›ึผืจื•ืŸ. ื“ืึธืก ืื™ื– ืจื™ื–ื™ืงืึทืœื™ืฉ, ื•ื•ื™ื™ึทืœ ื“ืขืจ ื–ื›ึผืจื•ืŸ ืงืขืŸ ืœื•ื™ืคืŸ ืื•ื™ืก, ื•ื•ื™ื™ึทืœ, ืจื•ื‘ึฟ ืžืกืชึผืžื, ืื™ื™ืŸ ื˜ืึธื’ ื“ื™ ืคึผืจืึทืกืขืกืึทื– ื•ื•ืขื˜ ื“ืึทืจืคืŸ ืขืก.
2: ื“ืขืจ ืงืขืจืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ืจืขื–ืขืจื•ื•ื™ืจืŸ ืžืขืจ ื–ื›ึผืจื•ืŸ ื•ื•ื™ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ overcommit_ratio.

ืžื™ื˜ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ, ืื™ืจ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ืคึผืจืึธืฆืขื ื˜ ืคื•ืŸ ื–ื›ึผืจื•ืŸ ื•ื•ืึธืก ืื™ื– ืขืจืœื•ื™ื‘ื˜ ืฆื• ื–ื™ื™ืŸ ืื™ื‘ืขืจ-ืจืขื–ืขืจื•ื•ื™ืจื˜. ืื•ื™ื‘ ืขืก ืื™ื– ืงื™ื™ืŸ ืคึผืœืึทืฅ ืคึฟืึทืจ ืื™ื, ืงื™ื™ืŸ ื–ื›ึผืจื•ืŸ ืื™ื– ืึทืœืึทืงื™ื™ื˜ื™ื“, ืื•ืŸ ื“ื™ ืจืขื–ืขืจื•ื•ืึทืฆื™ืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืœื™ื™ืงื ื˜. ื“ืึธืก ืื™ื– ื“ื™ ืกื™ื™ืคืึทืกื˜ ืึธืคึผืฆื™ืข ืจืขืงืึทืžืขื ื“ื™ื“ ืคึฟืึทืจ PostgreSQL. OOM-Killer ืื™ื– ืึทืคืขืงื˜ืึทื“ ื“ื•ืจืš ืืŸ ืื ื“ืขืจ ืขืœืขืžืขื ื˜ - ื“ื™ ืกื•ื•ืึทืคึผื™ื ื’ ืคื™ื™ื™ืงื™ื™ื˜, ื•ื•ืึธืก ืื™ื– ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื“ื™ ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง cat /proc/sys/vm/swappiness. ื“ื™ ื•ื•ืึทืœื•ืขืก ื–ืึธื’ืŸ ื“ื™ ืงืขืจืŸ ื•ื•ื™ ืฆื• ืฉืขืคึผืŸ ืคึผื™ื™ื“ื–ืฉื™ื ื’. ื“ื™ ื”ืขื›ืขืจ ื“ื™ ื•ื•ืขืจื˜, ื“ื™ ื•ื•ื™ื™ื ื™ืงืขืจ ืžืกืชึผืžื ืขืก ืื™ื– ืึทื– OOM ื•ื•ืขื˜ ืคืึทืจืขื ื“ื™ืงืŸ ื“ืขื ืคึผืจืึธืฆืขืก, ืึธื‘ืขืจ ืจืขื›ื˜ ืฆื• I / O ืึทืคึผืขืจื™ื™ืฉืึทื ื–, ืขืก ื”ืื˜ ืึท ื ืขื’ืึทื˜ื™ื•ื• ืคึผืจืึทืœ ืื•ื™ืฃ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก. ืื•ืŸ ื•ื•ื™ืฆืข ื•ื•ืขืจืกืึท - ื“ื™ ื ื™ื“ืขืจื™ืงืขืจ ื“ื™ ื•ื•ืขืจื˜, ื“ื™ ื”ืขื›ืขืจ ื“ื™ ืœื™ืงืขืœื™ื”ืึธืึธื“ ืคื•ืŸ OOM-Killer ื™ื ื˜ืขืจื•ื•ืขื ื˜ื™ืึธืŸ, ืึธื‘ืขืจ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื™ื– ืื•ื™ืš ื”ืขื›ืขืจ. ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื•ื•ืขืจื˜ ืื™ื– 60, ืึธื‘ืขืจ ืื•ื™ื‘ ื“ื™ ื’ืื ืฆืข ื“ืึทื˜ืึทื‘ื™ื™ืก ืคื™ืฅ ืื™ืŸ ื–ื›ึผืจื•ืŸ, ืขืก ืื™ื– ื‘ืขืกืขืจ ืฆื• ืฉื˜ืขืœืŸ ื“ื™ ื•ื•ืขืจื˜ ืฆื• 1.

ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ

ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืœืึธื–ืŸ ื“ื™ "ืงื™ืœืขืจ" ืื™ืŸ OOM-Killer ื™ื‘ืขืจืฉืจืขืงืŸ ืื™ืจ. ืื™ืŸ ื“ืขื ืคืึทืœ, ื“ืขืจ ืจืขืฆื™ื™ืขืš ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขืจ ื’ื•ืืœ ืคื•ืŸ ื“ื™ื™ืŸ ืกื™ืกื˜ืขื. ืขืก "ืงื™ืœื–" ื“ื™ ืขืจื’ืกื˜ ืคึผืจืึทืกืขืกืึทื– ืื•ืŸ ืกืึทื•ื•ืขืก ื“ื™ ืกื™ืกื˜ืขื ืคื•ืŸ ืงืจืึทืฉื™ื ื’. ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืฆื• ื ื•ืฆืŸ OOM-Killer ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ PostgreSQL, ืฉื˜ืขืœืŸ ืฆื• vm.overcommit_memory ื•ื•ืขืจื˜ 2. ื“ืึธืก ืงืขืŸ ื ื™ืฉื˜ ื’ืึทืจืึทื ื˜ื™ืจืŸ ืึทื– OOM-Killer ื•ื•ืขื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื• ื™ื ืขืจื•ื•ื™ืŸ, ืึธื‘ืขืจ ืขืก ื•ื•ืขื˜ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืœื™ืงืขืœื™ื”ืึธืึธื“ ืคื•ืŸ ืคืึธืจืกื™ื ื’ ื“ื™ PostgreSQL ืคึผืจืึธืฆืขืก ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ.

ืžืงื•ืจ: www.habr.com

ืงื•ื™ืคืŸ ืคืึทืจืœืึธื–ืœืขืš ื”ืึธืกื˜ื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ื˜ืœืขืš ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก ๐Ÿ”ฅ ืงื•ื™ืคื˜ ืคืึทืจืœืขืกืœืขื›ืข ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื”ืึธืกื˜ื™ื ื’ ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก | ProHoster