рд╕рдорд░реНрдкрд┐рдд рдЪреВрд▓реНрд╣рд╛ рд╕реНрдореГрддрд┐ рдФрд░ OOM рдХрд┐рд▓рд░ рд╣рд╕реНрддрдХреНрд╖реЗрдк

рдлрд┐рд░ рд╕реЗ рдирдорд╕реНрдХрд╛рд░! рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕-рдЖрдзрд╛рд░рд┐рдд рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдЗрд╕ рдорд╣реАрдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЖрдЗрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



рд╣рд╛рд▓ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ, рдореЗрд░реЗ рдХреБрдЫ рдкреЙрдбреНрд╕ рд▓рдЧрд╛рддрд╛рд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдУрдПрд╕ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдиреЛрдЯ рдЫреЛрдбрд╝рдХрд░ рдХрд┐ OOM рдХрд┐рд▓рд░ рдиреЗ рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдЪреВрд▓реНрд╣рд╛ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ рдФрд░ cgroup рд╕реНрдореГрддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рдХреЗ 3 рдПрд╕ рд╡рд┐рддрд░рдг рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд╣рдо 123 MiB (123 Mi) рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред

kubectl run --restart=Never --rm -it --image=ubuntu --limits='memory=123Mi' -- sh If you don't see a command prompt, try pressing enter. root@sh:/# 

рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдЪреВрд▓реНрд╣рд╛ рдХреЗ uid рдкрддрд╛ рд▓рдЧрд╛рдПрдВред

 kubectl get pods sh -o yaml | grep uid uid: bc001ffa-68fc-11e9-92d7-5ef9efd9374c 

рд╕рд░реНрд╡рд░ рдХреЗ рдиреАрдЪреЗ рдЬрд╣рд╛рдВ рдпрд╣ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рдкреЙрдб рдХреЗ uid рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ cgroup рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкрддрд╛ cgroup ред

 cd /sys/fs/cgroup/memory/kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c cat memory.limit_in_bytes 128974848 

128974848 рдмрд┐рд▓реНрдХреБрд▓ 123 MiB (123 * 1024 * 1024) рд╣реИред рд╕реНрдерд┐рддрд┐ рд╕рд╛рдл рд╣реЛ рд░рд╣реА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ, рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХреЛ cgroup рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдмрдврд╝рддреА рд╣реИ, cgroup рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рд┐рдирд╛рд╢ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддрд╛ рд╣реИред

рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг


рдЪрд▓реЛ рдЦреБрд▓реЗ рдХрдорд╛рдВрдб рдХрдВрд╕реЛрд▓ рд╕рддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреВрд▓реНрд╣рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

 root@sh:/# apt update; apt install -y stress 

рдЙрд╕реА рд╕рдордп, рд╣рдо dmesg -Tw рд╕рд╛рде syslog рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЪрд▓рд╛рдПрдВ, рд╕реНрдореГрддрд┐ рдореЗрдВ 100 рдПрдордмреА рдЖрд╡рдВрдЯрд┐рдд рдХрд░реЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╢реБрд░реВ рд╣реБрдИред

 root@sh:/# stress --vm 1 --vm-bytes 100M & [1] 271 root@sh:/# stress: info: [271] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd 

рдЕрдм рд╣рдо рджреВрд╕рд░рд╛ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗред

 root@sh:/# stress --vm 1 --vm-bytes 50M stress: info: [273] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd stress: FAIL: [271] (415) <-- worker 272 got signal 9 stress: WARN: [271] (417) now reaping child worker processes stress: FAIL: [271] (451) failed run completed in 7s 

рд▓реЙрдиреНрдЪ рдиреЗ рд╕рд┐рдЧреНрдирд▓ 9 рдкрд░ рдкрд╣рд▓реЗ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг (рдкреАрдЖрдИрдбреА тАЛтАЛ271) рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╡рд┐рдирд╛рд╢ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ред

рдЗрд╕ рдмреАрдЪ, рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреАрдВ:

[Sat Apr 27 22:56:09 2019] stress invoked oom-killer: gfp_mask=0x14000c0(GFP_KERNEL), nodemask=(null), order=0, oom_score_adj=939
[Sat Apr 27 22:56:09 2019] stress cpuset=a2ed67c63e828da3849bf9f506ae2b36b4dac5b402a57f2981c9bdc07b23e672 mems_allowed=0
[Sat Apr 27 22:56:09 2019] CPU: 0 PID: 32332 Comm: stress Not tainted 4.15.0-46-generic #49-Ubuntu
[Sat Apr 27 22:56:09 2019] Hardware name: BHYVE, BIOS 1.00 03/14/2014
[Sat Apr 27 22:56:09 2019] Call Trace:
[Sat Apr 27 22:56:09 2019] dump_stack+0x63/0x8b
[Sat Apr 27 22:56:09 2019] dump_header+0x71/0x285
[Sat Apr 27 22:56:09 2019] oom_kill_process+0x220/0x440
[Sat Apr 27 22:56:09 2019] out_of_memory+0x2d1/0x4f0
[Sat Apr 27 22:56:09 2019] mem_cgroup_out_of_memory+0x4b/0x80
[Sat Apr 27 22:56:09 2019] mem_cgroup_oom_synchronize+0x2e8/0x320
[Sat Apr 27 22:56:09 2019] ? mem_cgroup_css_online+0x40/0x40
[Sat Apr 27 22:56:09 2019] pagefault_out_of_memory+0x36/0x7b
[Sat Apr 27 22:56:09 2019] mm_fault_error+0x90/0x180
[Sat Apr 27 22:56:09 2019] __do_page_fault+0x4a5/0x4d0
[Sat Apr 27 22:56:09 2019] do_page_fault+0x2e/0xe0
[Sat Apr 27 22:56:09 2019] ? page_fault+0x2f/0x50
[Sat Apr 27 22:56:09 2019] page_fault+0x45/0x50
[Sat Apr 27 22:56:09 2019] RIP: 0033:0x558182259cf0
[Sat Apr 27 22:56:09 2019] RSP: 002b:00007fff01a47940 EFLAGS: 00010206
[Sat Apr 27 22:56:09 2019] RAX: 00007fdc18cdf010 RBX: 00007fdc1763a010 RCX: 00007fdc1763a010
[Sat Apr 27 22:56:09 2019] RDX: 00000000016a5000 RSI: 0000000003201000 RDI: 0000000000000000
[Sat Apr 27 22:56:09 2019] RBP: 0000000003200000 R08: 00000000ffffffff R09: 0000000000000000
[Sat Apr 27 22:56:09 2019] R10: 0000000000000022 R11: 0000000000000246 R12: ffffffffffffffff
[Sat Apr 27 22:56:09 2019] R13: 0000000000000002 R14: fffffffffffff000 R15: 0000000000001000
[Sat Apr 27 22:56:09 2019] Task in /kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c/a2ed67c63e828da3849bf9f506ae2b36b4dac5b402a57f2981c9bdc07b23e672 killed as a result of limit of /kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c
[Sat Apr 27 22:56:09 2019] memory: usage 125952kB, limit 125952kB, failcnt 3632
[Sat Apr 27 22:56:09 2019] memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0
[Sat Apr 27 22:56:09 2019] kmem: usage 2352kB, limit 9007199254740988kB, failcnt 0
[Sat Apr 27 22:56:09 2019] Memory cgroup stats for /kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c: cache:0KB rss:0KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:0KB inactive_file:0KB active_file:0KB unevictable:0KB
[Sat Apr 27 22:56:09 2019] Memory cgroup stats for /kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c/79fae7c2724ea1b19caa343fed8da3ea84bbe5eb370e5af8a6a94a090d9e4ac2: cache:0KB rss:48KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:48KB inactive_file:0KB active_file:0KB unevictable:0KB
[Sat Apr 27 22:56:09 2019] Memory cgroup stats for /kubepods/burstable/podbc001ffa-68fc-11e9-92d7-5ef9efd9374c/a2ed67c63e828da3849bf9f506ae2b36b4dac5b402a57f2981c9bdc07b23e672: cache:0KB rss:123552KB rss_huge:0KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:123548KB inactive_file:0KB active_file:0KB unevictable:0KB
[Sat Apr 27 22:56:09 2019] [ pid ] uid tgid total_vm rss pgtables_bytes swapents oom_score_adj name
[Sat Apr 27 22:56:09 2019] [25160] 0 25160 256 1 28672 0 -998 pause
[Sat Apr 27 22:56:09 2019] [25218] 0 25218 4627 872 77824 0 939 bash
[Sat Apr 27 22:56:09 2019] [32307] 0 32307 2060 275 57344 0 939 stress
[Sat Apr 27 22:56:09 2019] [32308] 0 32308 27661 24953 253952 0 939 stress
[Sat Apr 27 22:56:09 2019] [32331] 0 32331 2060 304 53248 0 939 stress
[Sat Apr 27 22:56:09 2019] [32332] 0 32332 14861 5829 102400 0 939 stress
[Sat Apr 27 22:56:09 2019] Memory cgroup out of memory: Kill process 32308 (stress) score 1718 or sacrifice child
[Sat Apr 27 22:56:09 2019] Killed process 32308 (stress) total-vm:110644kB, anon-rss:99620kB, file-rss:192kB, shmem-rss:0kB
[Sat Apr 27 22:56:09 2019] oom_reaper: reaped process 32308 (stress), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB


рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг PID 32308 рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдЬрд░реНрдирд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЫрд┐рдкреА рд╣реИ:



рдпрд╣рд╛рдВ рдЗрд╕ рдЪреВрд▓реНрд╣рд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдУрдУрдПрдо рдХрд┐рд▓рд░ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдирд╛рд╢ рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВред рдмреЗрд╕ pause рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдЬреЛ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреА рд╣реИ, рдХреЛ oom_score_adj рдПрдХ oom_score_adj рд╕реНрдХреЛрд░ рдкреНрд░рд╛рдкреНрдд -998 , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧреАред рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╢реЗрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ 939 рдХрд╛ рдПрдХ oom_score_adj рд╕реНрдХреЛрд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖред рдЖрдк рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдиреАрдЪреЗ рдХреБрдмреЗрд░рдиреЗрдЯ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 min(max(2, 1000 - (1000 * memoryRequestBytes) / machineMemoryCapacityBytes), 999) 

рд╣рдо рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╕реНрдореГрддрд┐ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ:

 kubectl describe nodes k3s | grep Allocatable -A 5 Allocatable: cpu: 1 ephemeral-storage: 49255941901 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2041888Ki 

рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рдореЗрдореЛрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕реАрдорд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд oom_score_adj рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИ: 1000тАУ123*1024/2041888=938.32 , рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореВрд▓реНрдп 939 рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдУрдУрдПрдо рдХрд┐рд▓рд░ рдХреЛ 939 рдХрд╛ рд╕рдЯреАрдХ рдореВрд▓реНрдп рдХреИрд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред)

рддреЛ, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рди oom_score_adj рдорд╛рди рд╣реИред OOM рдХрд┐рд▓рд░ рдШрдЯрдХ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ OOM рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ oom_score_adive рд╕реНрдХреЛрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░, рдЕрдВрддрддрдГ, рдпрд╣ рдкрд╣рд▓реЗ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдореЛрд░реА, 100 рдПрдордмреА рдХреЛ рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрдорд╛рди oom_score = 1718 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ cgroup рдФрд░ OOM Killer рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреВрд▓реНрд╣рд╛ рд╕реНрдореГрддрд┐ рд╕реАрдорд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдУрдУрдПрдо рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдУрдУрдПрдо рдЪреВрд▓реНрд╣рд╛ рдХреА рд╢рд░реНрддреЛрдВ рдкрд░ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╕рд╣рдордд рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЖрдк рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рд╣рд░ рдХреЛрдИ рдЬреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ 17 рдЬреВрди рдХреЛ рдПрдХ рдореБрдлреНрдд рд╡реЗрдмрд┐рдирд╛рд░ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рдирд┐рд░рдВрддрд░ рд╡рд┐рддрд░рдг рдкреНрд░рдерд╛рдУрдВ (рд╕реАрдЖрдИ / рд╕реАрдбреА) рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рдЯреАрдо рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд░реЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рдеред

Source: https://habr.com/ru/post/hi456002/


All Articles