
рдЬрдм рдЗрд╕рдореЗрдВ Linux рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SIGSEGV - рдмреИрдХрдПрдВрдб рд╕рд░реНрд╡рд░ рдореЗрдВ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓рддрд╛ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рджреБрд░реНрд▓рдн рд╣реИ. рдЕрдХреНрд╕рд░, рдЖрдкрдХреА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдпрд╛ рдореЗрдореЛрд░реА рдЦрд╝рддреНрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИ - рд╕реНрдерд╛рди рдЦрд╛рд▓реА рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред
рдЖрдЙрдЯ-рдСрдлрд╝-рдореЗрдореЛрд░реА рдХрд┐рд▓рд░
рдХрдм рд╕рд░реНрд╡рд░ рдпрд╛ рдлрд┐рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдЦрддреНрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред Linux рдЖрдЙрдЯ-рдСрдл-рдореЗрдореЛрд░реА рдХрд┐рд▓рд░ рджреЛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдирд╛ рдпрд╛ рдореЗрдореЛрд░реА рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ред рдмреЗрд╢рдХ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдЙрдЯ-рдСрдл-рдореЗрдореЛрд░реА рдХрд┐рд▓рд░ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреЛ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддреА рд╣реИред рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЪрд╛рд▓реВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддреА рд╣реИред рдЖрдЗрдП рдкрд╣рд▓реЗ рдпрд╣ рд╕рдордЭреЗрдВ рдХрд┐ OOM рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рджреЗрдЦреЗрдВ рдХрд┐ OOM рдХрд┐рд▓рд░ рдХрд┐рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдХреИрд╕реЗ рд▓реЗрддрд╛ рд╣реИред
рдореБрдЦреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ Linux тАФ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдореЗрдореЛрд░реА рддрднреА рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВ рдЬрдм рд╡реЗ рдЗрд╕рдХреА рдорд╛рдВрдЧ рдХрд░реЗрдВред рдЖрдорддреМрд░ рдкрд░, рдХреЛрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрдореЛрд░реА рдЬрд▓реНрджреА рдЦрддреНрдо рд╣реЛ рдЬрд╛рдПрдЧреА рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореЗрдореЛрд░реА рддрднреА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдХреЛрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИред рдХрднреА-рдХрднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд╛рд╕ рдЦрд╛рд▓реА рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдореЛрд░реА рдЖрд░рдХреНрд╖рд┐рдд рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЦрд╛рд▓реА рдореЗрдореЛрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, OOM (рдЖрдЙрдЯ рдСрдл рдореЗрдореЛрд░реА рдХреНрд░реИрд╢) рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ, рдХрд░реНрдиреЗрд▓ рдХреЛ рдкреИрдирд┐рдХ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЬрдм PostgreSQL рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдмрд░рди рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЙрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
Out of Memory: Killed process 12345 (postgres).рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореЗрдореЛрд░реА рдХрдо рд╣реИ рдФрд░ рдЗрд╕реЗ рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ out_of_memory. рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рдо рдмрдЪрд╛ рд╣реИ - рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ред рдХреНрдпрд╛ OOM-рдХрд┐рд▓рд░ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП? рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЬрдм out_of_memory рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ I/O рдСрдкрд░реЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдкреЗрдЬрд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, OOM рдХрд┐рд▓рд░ рдХреЛ рдкрд╣рд▓реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА рдФрд░ рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдиреАрдЪреЗ рджреА рдЧрдИ рд╕рднреА рдЬрд╛рдБрдЪреЗрдВ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ, рддреЛ OOM рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрдпрди
рдЬрдм рдореЗрдореЛрд░реА рдЦрддреНрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ out_of_memory(). рдЗрд╕рдХрд╛ рдПрдХ рдлрдВрдХреНрд╢рди рд╣реИ select_bad_process(), рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ badness(). "рд╕рдмрд╕реЗ рдЦрд░рд╛рдм" рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдорд╛рд░реЛрд╣ badness() рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред
- рдХрд░реНрдиреЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдиреНрдпреВрдирддрдо рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
- рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реА рдореЗрдореЛрд░реА рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдХрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдиреНрдпреВрдирддрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреВрд░реА рдХрд░рдиреА рд╣реЛрдВрдЧреА.
- рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЬреЛ рдЙрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЗрди рд╕рднреА рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, OOM рд╕реНрдХреЛрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ (oom_score). OOM рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ oom_score рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕ рдорд╛рди рдХреЛ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ OOM рдХрд┐рд▓рд░ рдХрд╛ рд╢рд┐рдХрд╛рд░ рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд░реВрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╕реНрдХреЛрд░ рдХрдо рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛрддреА рд╣реИред
postgres=# SELECT pg_backend_pid();
pg_backend_pid
----------------
3813
(1 row)рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА 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-рдХрд┐рд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ oom_kill_task(). рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрддрд┐ рд╕рдВрдХреЗрдд рднреЗрдЬрддрд╛ рд╣реИред рдореЗрдореЛрд░реА рдХреА рдХрдореА рд╣реЛрдиреЗ рдкрд░ oom_kill() рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ SIGKILL рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХрд░реНрдиреЗрд▓ рд▓реЙрдЧ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ.
Out of Memory: Killed process [pid] [name].OOM-рдХрд┐рд▓рд░ рдХреЛ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ
╨Т Linux рдЖрдк OOM-Killer рдХреЛ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрдВрдж рдХрд░рдирд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕реЗ рдЪрд╛рд▓реВ рдпрд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред vm.oom-kill. рд░рдирдЯрд╛рдЗрдо рдкрд░ OOM-рдХрд┐рд▓рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ sysctl.
sudo -s sysctl -w vm.oom-kill = 1OOM-рдХрд┐рд▓рд░ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реА рдХрдорд╛рдВрдб рдореЗрдВ рдорд╛рди 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 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдмрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИред рдУрдУрдПрдо-рдХрд┐рд▓рд░ рдПрдХ рдЕрдиреНрдп рддрддреНрд╡ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИ - рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХреНрд╖рдорддрд╛, рдЬрд┐рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ cat /proc/sys/vm/swappiness. рдпреЗ рдорд╛рди рдХрд░реНрдиреЗрд▓ рдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкреЗрдЬрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдореВрд▓реНрдп рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛, рдЙрддрдиреА рд╣реА рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреА рдХрд┐ OOM рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди I/O рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХрд╛рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЗрд╕рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - рдореВрд▓реНрдп рдЬрд┐рддрдирд╛ рдХрдо рд╣реЛрдЧрд╛, рдУрдУрдПрдо-рдХрд┐рд▓рд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рднреА рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 60 рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕рдВрдкреВрд░реНрдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ, рддреЛ рдорд╛рди рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
OOM-рдХрд┐рд▓рд░ рдореЗрдВ "рд╣рддреНрдпрд╛рд░реЗ" рдХреЛ рдЖрдкрдХреЛ рдбрд░рд╛рдиреЗ рди рджреЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рддреНрдпрд╛рд░рд╛ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд░рдХреНрд╖рдХ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ "рдорд╛рд░ рджреЗрддрд╛ рд╣реИ" рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред PostgreSQL рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OOM-Killer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ vm.overcommit_memory рдорд╛рди 2. рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ OOM-рдХрд┐рд▓рд░ рдХреЛ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ PostgreSQL рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред
рд╕реНрд░реЛрдд: www.habr.com
