рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ 2.6.0 рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдХрд╛ рдЕрдиреБрдХреВрд▓рди

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ 2.6.0 рдиреЗ рд╡рд╛рд▓ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛, рдЬреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред


рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ 2.x TSDB рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд▓рдХреНрд╖реНрдп рд▓реЙрдиреНрдЪ рдХреЛ рдЧрддрд┐ рджреЗрдирд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рди рд▓рдЧреЗред рд╣рд╛рд▓ рдХреЗ рдорд╣реАрдиреЛрдВ рдореЗрдВ, рдРрд╕реА рдЦрдмрд░реЗрдВ рдЖрдИ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд▓рдЧрднрдЧ рдЗрд╕ рд╕рдордп, рд╡рд╛рд▓ (рдкреНрд░реА-рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ) рднрд░реА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдирдореВрдиреЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрднреА рддрдХ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рдВрдХреБрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЕрдХреНрдЯреВрдмрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА; рдкрд░рд┐рдгрд╛рдо PR # 440 рд╣реИ , рдЬреЛ CPU рд╕рдордп рдХреЛ 6.5 рдЧреБрдирд╛ рдФрд░ рдЧрдгрдирд╛ рд╕рдордп рдХреЛ 4 рдЧреБрдирд╛ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдпреЗ рд╕реБрдзрд╛рд░ рдХреИрд╕реЗ рдХрд┐рдПред


рдЫрд╡рд┐


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЧреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдпрд╛, рдЬреЛ 10,000 рд╕рдордп рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдПрдХ рдЕрд░рдм рдирдореВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЯреАрдПрд╕рдбреАрдмреА рдХреЛ рд╡рд╛рд▓ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рддрдм рдореИрдВрдиреЗ рдЗрд╕ TSDB рдХреЛ рдЦреЛрд▓рд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП time рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдореЗрдореЛрд░реА рдЖрдБрдХрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ), рдФрд░ рд░рдирдЯрд╛рдЗрдо / рдкрд┐рдЪрд░ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реАрдкреАрдпреВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рднреА рдмрдирд╛рдИ рдЧрдИ рд╣реИ:


 f, err := os.Create("cpu.prof") if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() 

рд╕реАрдкреАрдпреВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╣рдореЗрдВ рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмреНрдпрд╛рдЬ рдХреА рдЧрдгрдирд╛ рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╣рд╕рдВрдмрдВрдз рд╣реИред рдирддреАрдЬрддрди, рдореЗрд░реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░ (16 рдЬреАрдмреА рд░реИрдо рдФрд░ рд╕реЙрд▓рд┐рдб рд╕реНрдЯреЗрдЯ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде i7-3770 рдкреНрд░реЛрд╕реЗрд╕рд░) рдкрд░, рдбрд╛рдЙрдирд▓реЛрдб рдореЗрдВ рд▓рдЧрднрдЧ 4 рдорд┐рдирдЯ рд▓рдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдЪрд░рдо рдкрд░ 6 рдЬреАрдмреА рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд░реИрдо:


 1727.50user 16.61system 4:01.12elapsed 723%CPU (0avgtext+0avgdata 5962812maxresident)k 23625165inputs+95outputs (196major+2042817minor)pagefaults 0swaps 

рдпрд╣ рдПрдХ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рд▓реЛрдб go tool pprof cpu.prof рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдб рдХрд░рддреЗ go tool pprof cpu.prof рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк top рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред


рдЫрд╡рд┐


рдпрд╣рд╛рдБ flat рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреА рд░рд╛рд╢рд┐ рд╣реИ, рдФрд░ cum рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмреБрд▓рд╛рдП рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдордп рд╣реИред рдкреНрд░рд╢реНрди рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЧреНрд░рд╛рдл рдореЗрдВ рджреЗрдЦрдирд╛ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП web рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди svg, png рдФрд░ pdf рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕рд╣рд┐рдд рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред


рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕реАрдкреАрдпреВ рдХрд╛ рд▓рдЧрднрдЧ рдПрдХ рддрд┐рд╣рд╛рдИ рд╣рд┐рд╕реНрд╕рд╛ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирдореВрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд╛рд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд░ рджреЛ-рддрд┐рд╣рд╛рдИ рдФрд░ рд╕реНрдореГрддрд┐ ( runtime.scanobject ) рдХреА рд╕рдлрд╛рдИ рдкрд░ рдПрдХ рдЪреМрдерд╛рдИред рдЖрдЗрдП list memSeries.*append рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реА рдХреЗ рд▓рд┐рдП рдХреЛрдб list memSeries.*append :


рдЫрд╡рд┐


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: 1443 рд▓рд╛рдЗрди рдкрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрд╛ рдореБрдЦреНрдп рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрди 1449 рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рдордп рдирд╣реАрдВ рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИред рд▓рд╛рдЗрди 1465 рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп - рдЙрдореНрдореАрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдореВрд▓ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред


memSeries.head рддрддреНрд╡ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ: рдпрд╣ рд╣рд░ рдмрд╛рд░ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ 120 рдкрд░рд┐рд╡рд░реНрдзрди рдХреЗ рдмрд╛рдж рд╣реА рдбреЗрдЯрд╛ рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рд┐рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рд░реИрдо рд▓реЗрддрд╛ рд╣реИ ( рдЬреЛ рдореИрдВ рдмрд╛рдж рдореЗрдВ рд▓реМрдЯреВрдВрдЧрд╛ ), рд▓реЗрдХрд┐рди рд╕реАрдкреАрдпреВ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░рд╛рд╢рд┐ рдмрдЪрд╛рддрд╛ рд╣реИред рдФрд░ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдпрд╣ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рднреА рдЧрддрд┐ рджреЗрддрд╛ рд╣реИред


рддреЛ рдлрд┐рд░ рдЪрд▓рд┐рдП рдПрдХ рдирдЬрд╝рд░ Head.processWALSamples :


рдЫрд╡рд┐


рдпрд╣ рдРрдб-рдСрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реА рд╕реНрдкрд╖реНрдЯ рдЕрдкрд░рд╛рдзреА рдХреЛ рджреЗрдЦреЗрдВ, getByID рдСрди рд▓рд╛рдЗрди 252:
(рдХреЛрдб)


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд╡рд░реЛрдзрдХ рд╕рдВрдШрд░реНрд╖ рд╣реИ, рдФрд░ рд╕рдордп рджреЛ-рд╕реНрддрд░реАрдп рдорд╛рдирдЪрд┐рддреНрд░ рдЦреЛрдЬ рдХрд░ рд░рд╣рд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдЗрд╕ рд╕реВрдЪрдХ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред


рдпрд╣ Head.processWALSamples рдкрд░ рджреВрд╕рд░реА рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд▓рд╛рдЗрди 249 рдкрд░ рдХрд┐рддрдирд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдЗрдП рд╣рдо рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рд╡рд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╡реЙрдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ: Head.processWALSamples Head.processWALSamples рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрд▓рдмреНрдз рд╕реАрдкреАрдпреВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ред рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд╡рд╛рд▓ рд╕реЗ рдбрд┐рд╕реНрдХред рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрди рдЧреЛрд░реЛрдЗрдВрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЦрдВрдбрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╕рднреА рдирдореВрдиреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдЧреЛрд░реБрдЯрд┐рди рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЙрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдлрд┐рд░ рд╡рд╣ рд╕рднреА рдирдореВрдиреЛрдВ рдХреЛ рджреВрд╕рд░реЗ рдЧреЛрд░реВрдЯрд┐рди рдХреЗ рдкрд╛рд╕ рднреЗрдЬрддреА рд╣реИ, рдЬреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЕрдВрддрд┐рдо рдЧреЛрд░реВрдЯрд┐рди рддрдХ, Head.processWALSamples рд╕рднреА рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдирд┐рдпрдВрддреНрд░рдг рдЧреЛрд░реБрдЯрд┐рди рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред


рдЗрд╕ рдмреАрдЪ, рдРрдб-рдСрди рдХреЛ рдЧреБрдард▓реА рдХреЗ рдкрд╛рд░ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬреЛ рдХрд┐ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд░реБрдЯрд┐рди рдореЗрдВ рдХрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдирдореВрдиреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХ рдХреЛрд░, рдЕрдзрд┐рдХ рдХрд╛рдо рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЧреЙрд░реБрдЯрд┐рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд┐рдП, рддрд╛рдХрд┐ рд╣реЗрдб.рдкреНрд░реЛрд╕реЗрд╕рд╡реБрд╕реНрд▓реЗрдореНрдкрдиреНрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд░реВрдЯрд┐рди рдХреЛ рдХреЗрд╡рд▓ рд╡реЗ рдирдореВрдиреЗ Head.processWALSamples рдЙрд╕реЗ рдЬрд░реВрд░рдд рд╣реИ ред рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ - 8 рд░рдирд┐рдВрдЧ рдЧреЛрд░реВрдЯрд┐рди - рдЧрдгрдирд╛ рдХрд╛ рд╕рдордп рдереЛрдбрд╝рд╛ рдмрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕реАрдкреАрдпреВ рдХреА рдорд╛рддреНрд░рд╛ рд╕рднреНрдп рдереАред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрд░ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдн рдЕрдзрд┐рдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдФрд░ рдлрд┐рд░ рд╕реЗ рд╣рдо рдЗрд╕ рд╕рд╡рд╛рд▓ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ: рд╕реНрдореГрддрд┐ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХрд╛ рд╕рдордпред рд╣рдо рдЗрд╕реЗ (рдЖрдорддреМрд░ рдкрд░) рд╕реАрдкреАрдпреВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ рдЬреЛ рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреБрдЫ рдХреЛрдб рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 runtime.GC() hf, err := os.Create("heap.prof") if err != nil { log.Fatal(err) } pprof.WriteHeapProfile(hf) 

рдФрдкрдЪрд╛рд░рд┐рдХ рд╕реНрдореГрддрд┐ рд╕рдлрд╛рдИ рдЧрддрд┐рд╢реАрд▓ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕рдлрд╛рдИ рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рд╕рдлрд╛рдИ рдХреЗ рджреМрд░рд╛рди рдХреА рдЬрд╛рддреА рд╣реИред


рд╣рдо рдлрд┐рд░ рд╕реЗ рдПрдХ рд╣реА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди -alloc_space рд▓реЗрдмрд▓ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕рднреА рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рди рдХрд┐ рдХреЗрд╡рд▓ рдРрд╕реЗ рдСрдкрд░реЗрд╢рди рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХреНрд╖рдг рдореЗрдВ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд░рди go tool pprof -alloc_space heap.prof ред рдпрджрд┐ рдЖрдк рдКрдкрд░реА рд╡рд┐рддрд░рдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрд░рд╛рдзреА рд╕реНрдкрд╖реНрдЯ рд╣реИ:


рдЫрд╡рд┐


рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


рдЫрд╡рд┐


рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ samples рдРрд░реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрддреА рд╣реИред рдпрджрд┐ рд╣рдо RecordDecoder.Samples рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реА рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд░рдгреА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреЛрдбрд┐рдВрдЧ рддреНрд░реБрдЯрд┐ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЧрдИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдореЗрдореЛрд░реА рдХреЛ 151 рд╕реЗрдХрдВрдб рдХреЗ рдмрдЬрд╛рдп рд╕реАрдкреАрдпреВ рдХреЗ 8 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕рдордЧреНрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рдореВрд░реНрдд рд╣реИрдВ:


 269.18user 10.69system 1:05.58elapsed 426%CPU (0avgtext+0avgdata 3529556maxresident)k 23174929inputs+70outputs (815major+1083172minor)pagefaults 0swap 

рд╣рдордиреЗ рди рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рд╕рдордп рдХреЛ 4 рдЧреБрдирд╛ рдХрдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕реАрдкреАрдпреВ рд╕рдордп - 6.5 рдЧреБрдирд╛ рддрдХ, рд▓реЗрдХрд┐рди рдХрдмреНрдЬреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рднреА 2 рдЬреАрдмреА рд╕реЗ рдХрдо рд╣реЛ рдЧрдИ рд╣реИред


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд╛рд▓ рдпрд╣ рд╣реИ: рдореИрдВ рд╢рд╛рд▓реАрдирддрд╛ рд╕реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рд░рдЧрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ рдмрд╛рдзрд╛ред рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХрдИ рдмрд╛рд░ рдПрдХ рдореГрдд NumSamples рдЖрдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ NumSamples рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд░реАрдбрд┐рдВрдЧ рдФрд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ, рд╕рд╛рде рд╣реА рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ processWALSamples рдХреЛ processWALSamples ред рдореБрдЭреЗ рд▓рдЧрднрдЧ рдпрдХреАрди рд╣реИ рдХрд┐ рдЧреЛрд░реБрдЯрд┐рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рдХреЗ, рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╢реАрдиреЛрдВ рдкрд░ рдЦрджрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрд░реАрдХреЗ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреЛрд░ рдЕрдзрд┐рдХ рд╣реЛрдВред рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛: рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ, рдФрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рдерд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд╣рд╛рдВ рд░реБрдХрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

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


All Articles