Aspnetcore: рдШрдЯрдирд╛ рд╕реНрд░реЛрдд? рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕реНрд░реЛрдд? рджреЛрдиреЛрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рджрд┐рд╕ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/aspnetcore

рдореИрдВ EventSource рдЯреНрд░реЗрд╕рд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github.com/aspnet/Security/issues/1518) рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрдИ рд░реЗрдкреЛ рдореЗрдВ @anurse рджреНрд╡рд╛рд░рд╛

рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдирдП Activity рд╕рд╛рдорд╛рди рдХреЗ рд╕рд╛рде DiagnosticSource рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦ тАЛтАЛрд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╡рд╣реА рд░реЗрдкреЛ DiagnosticSource рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред

рдХреНрдпрд╛ рдПрдХ рдХреЗ рдКрдкрд░ рджреВрд╕рд░реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдпреЛрдЬрдирд╛ рд╣реИ? рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ EventSource рдИрдЯреАрдбрдмреНрд▓реНрдпреВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрди-рдкреНрд░реЛ рд╣реИ?

рдХрд┐рд╕реА рднреА рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреБрдЫ рддреНрд╡рд░рд┐рдд рд╡рд┐рдЪрд╛рд░ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ ...

рдШрдЯрдирд╛ рд╕реНрд░реЛрдд

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

рдЕрдЧрд▓рд╛ рдХрдерди рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░рдг рдПрдХ рдХреНрд╖рдг рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред EventSource рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдк рдЬрд┐рд╕ рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдШрдЯрдХ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд░реНрде рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдШрдЯрдирд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред EventSource рдХреЗ рд╕рд╛рде рдЖрдк рдЕрдХреНрд╕рд░ "4096 рдмрд╛рдЗрдЯреНрд╕ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ" рдпрд╛ "5.6ms рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓" рдЬреИрд╕реА рдмрд╛рддреЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рддрдереНрдп рдХреЗ рдЗрди рдЫреЛрдЯреЗ рдмрдпрд╛рдиреЛрдВ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ "150ms рдлрд╝рд╛рдЗрд▓ i/o рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛" рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреНрд░рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрджрд┐ рд╡реЗ рдЖрдЙрдЯрд▓реЗрдпрд░ рд╣реИрдВред

рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕реНрд░реЛрдд

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

рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдЗрд╡реЗрдВрдЯ рдЪрдВрдХреАрдпрд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ "рдореИрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ" рдпрд╛ "рдореИрдВрдиреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛" рдЬреИрд╕реА рдмрд╛рддреЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рдпреЗ рдЕрднреА рднреА рддрдереНрдп рдХреЗ рдмрдпрд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рджрд╛рдпрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдореГрджреНрдз рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рд░реНрдердХ рд╣реИ рдЙрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЕрдВрддрддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдЬреИрд╕реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╕реЗрдЯ ASP.NET рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд╣ рд╕рдм рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рд╡реЗ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордЭрддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВред

рдЖрдк рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рдмреНрд░рд┐рдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ EventSource рдореЗрдВ рднреА рдкрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceEventSource.cs#L22 рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╕рднреА рдореЗрдВ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рд╡рд╣реА рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдЖрдк EventSource. рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рд╡рд╛рд▓реА рд░рдгрдиреАрддрд┐ рдХреИрд╕реЗ рдЪрд▓реЗрдЧреА, рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдХрдИ рдмрд╛рд░ рдмрджрд▓рд╛ рд╣реИред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЭрд▓рдХ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭреЗрджрд╛рд░реА рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХреА, рд╣рдореЗрдВ рдЕрдВрддрддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭреЗрджрд╛рд░реА рдХрд░рдиреА рдкрдбрд╝реАред рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрднреА рдЙрди рдЕрдиреНрдп рдЯреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛рдПрдБ

рдореИрдВ рдЗрд╡реЗрдВрдЯрд╕реЛрд░реНрд╕ рдпрд╛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдмрдбрд╝реА рд░рдгрдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ - рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдо рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрддреА рд╣реИред рд╣рдордиреЗ EventSource рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ DiagnosticSource рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИред рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрдкрднреЛрдХреНрддрд╛ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рд╕реНрд░реЛрдд рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдирд┐рджрд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреА рддрд░рд╣ рд╣реИрдВред рдореИрдВ рдЙрджреНрдпрдо рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдпрдж 3-5 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдмрд┐рдВрджреБ рд╣реЛрдВ рдФрд░ рдПрдорд╡реАрд╕реА 10 рдХреЗ рдХрд░реАрдм рд╣реЛред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд░реВрд░рдд рд╣реИ рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдИрд╡реЗрдВрдЯ рд╕реНрд░реЛрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдлреАрд▓реНрдб рд╕рдкреЛрд░реНрдЯ рдЗрдВрдЬреАрдирд┐рдпрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдФрд░ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ Microsoft рдХреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдо рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЫреЛрдбрд╝реЗ рдЧрдП рд╢реВрдиреНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред .NET рдЯреАрдо EventCounters (рдЗрд╡реЗрдВрдЯрд╕реЛрд░реНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд┐рдд) рдХреЛ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред ASP.NET рдЯреАрдо рджреНрд╡рд╛рд░рд╛ EventSource рдореЗрдВ рдЕрдзрд┐рдХ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐ рдХреНрдпрд╛ рд╣реЛрдЧреАред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреАрдЬ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдпрджрд┐ EventSource рдЗрд╕реЗ *nix рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдЗрд╕реЗ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбреЙрдХреНрдЯрд░ рд╣реИ: https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md#instrumenting -with-diagnosticsourcediagnosticlistener рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдЕрдзрд┐рдХ рд╣реИрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╛рд░реАрдХреА рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ред

рдЖрдкрдХреЗ рд▓рд┐рдП

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджреЛрдиреЛрдВ рдпрд╛ рджреЛрдиреЛрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЬрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╕рд▓рд╛рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреМрди рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИ? (рдкреВрд░реНрдг) рдХреНрдпрд╛ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ? (рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг) рдХреНрдпрд╛ рдпрд╣ рдЯреВрд▓ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ? рдХреНрдпрд╛ рдЙрдкрдХрд░рдг рдкреЛрд╕реНрдЯрдореЙрд░реНрдЯрдо рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдРрдк рдХреЗ рдЕрдВрджрд░?

рджреВрд╕рд░реЗ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдХрд┐рддрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдХрд░рдг рд▓рдЧрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╕рд╛рд░реНрдердХ рд▓рдЧрддрд╛ рд╣реИред рдЙрдкрднреЛрдХреНрддрд╛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдордЭреЗрдВрдЧреЗ рдФрд░ рдЙрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рд╕рд╛рд░реНрдердХ рд╣реИрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@rynowak - рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдХреБрдЫ рддреНрд╡рд░рд┐рдд рд╡рд┐рдЪрд╛рд░ рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рджреЛрд╣рд░рд╛рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ ...

рдШрдЯрдирд╛ рд╕реНрд░реЛрдд

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

рдЕрдЧрд▓рд╛ рдХрдерди рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░рдг рдПрдХ рдХреНрд╖рдг рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред EventSource рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдШрдЯрдирд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдк рдЬрд┐рд╕ рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдШрдЯрдХ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд░реНрде рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдШрдЯрдирд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред EventSource рдХреЗ рд╕рд╛рде рдЖрдк рдЕрдХреНрд╕рд░ "4096 рдмрд╛рдЗрдЯреНрд╕ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВ" рдпрд╛ "5.6ms рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓" рдЬреИрд╕реА рдмрд╛рддреЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рддрдереНрдп рдХреЗ рдЗрди рдЫреЛрдЯреЗ рдмрдпрд╛рдиреЛрдВ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ "150ms рдлрд╝рд╛рдЗрд▓ i/o рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛" рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреНрд░рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдпрджрд┐ рд╡реЗ рдЖрдЙрдЯрд▓реЗрдпрд░ рд╣реИрдВред

рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕реНрд░реЛрдд

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

рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдЗрд╡реЗрдВрдЯ рдЪрдВрдХреАрдпрд░ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ "рдореИрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ" рдпрд╛ "рдореИрдВрдиреЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛" рдЬреИрд╕реА рдмрд╛рддреЗрдВ рдХрд╣рддреЗ рд╣реИрдВред рдпреЗ рдЕрднреА рднреА рддрдереНрдп рдХреЗ рдмрдпрд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рджрд╛рдпрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдореГрджреНрдз рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬреЛ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рд░реНрдердХ рд╣реИ рдЙрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЕрдВрддрддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдЬреИрд╕реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╕реЗрдЯ ASP.NET рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд╣ рд╕рдм рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ рдФрд░ рд╡реЗ рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордЭрддреЗ рд╣реИрдВ рдЙрд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВред

рдЖрдк рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рдмреНрд░рд┐рдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ EventSource рдореЗрдВ рднреА рдкрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/DiagnosticSourceEventSource.cs#L22 рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рд╕рднреА рдореЗрдВ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рд╡рд╣реА рд╕реНрдерд╛рди рдЬрд╣рд╛рдВ рдЖрдк EventSource. рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рд╡рд╛рд▓реА рд░рдгрдиреАрддрд┐ рдХреИрд╕реЗ рдЪрд▓реЗрдЧреА, рдореИрдВрдиреЗ рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдХрдИ рдмрд╛рд░ рдмрджрд▓рд╛ рд╣реИред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЭрд▓рдХ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭреЗрджрд╛рд░реА рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдХреА, рд╣рдореЗрдВ рдЕрдВрддрддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдирд╕рд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭреЗрджрд╛рд░реА рдХрд░рдиреА рдкрдбрд╝реАред рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрднреА рдЙрди рдЕрдиреНрдп рдЯреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛рдПрдБ

рдореИрдВ рдЗрд╡реЗрдВрдЯрд╕реЛрд░реНрд╕ рдпрд╛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реЛрд░реНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреА рдмрдбрд╝реА рд░рдгрдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ - рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдо рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдХреИрд╕реЗ рджреЗрдЦрддреА рд╣реИред рд╣рдордиреЗ EventSource рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ DiagnosticSource рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИред рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдЙрдкрднреЛрдХреНрддрд╛ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рд╕реНрд░реЛрдд рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдирд┐рджрд╛рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреА рддрд░рд╣ рд╣реИрдВред рдореИрдВ рдЙрджреНрдпрдо рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рд╢рд╛рдпрдж 3-5 рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХ рд╕реНрд░реЛрдд рдмрд┐рдВрджреБ рд╣реЛрдВ рдФрд░ рдПрдорд╡реАрд╕реА 10 рдХреЗ рдХрд░реАрдм рд╣реЛред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕реА рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦ рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд░реВрд░рдд рд╣реИ рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдИрд╡реЗрдВрдЯ рд╕реНрд░реЛрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдлреАрд▓реНрдб рд╕рдкреЛрд░реНрдЯ рдЗрдВрдЬреАрдирд┐рдпрд░ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдФрд░ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ Microsoft рдХреА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдо рдЕрднреА рднреА рдкреНрд░рджрд░реНрд╢рди рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЫреЛрдбрд╝реЗ рдЧрдП рд╢реВрдиреНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред .NET рдЯреАрдо EventCounters (рдЗрд╡реЗрдВрдЯрд╕реЛрд░реНрд╕ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рд░реНрдорд┐рдд) рдХреЛ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред ASP.NET рдЯреАрдо рджреНрд╡рд╛рд░рд╛ EventSource рдореЗрдВ рдЕрдзрд┐рдХ рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐ рдХреНрдпрд╛ рд╣реЛрдЧреАред рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреАрдЬ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдпрджрд┐ EventSource рдЗрд╕реЗ *nix рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдЗрд╕реЗ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбреЙрдХреНрдЯрд░ рд╣реИ: https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md#instrumenting -with-diagnosticsourcediagnosticlistener рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдЕрдзрд┐рдХ рд╣реИрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рдгрдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╛рд░реАрдХреА рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ред

рдЖрдкрдХреЗ рд▓рд┐рдП

рдареАрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджреЛрдиреЛрдВ рдпрд╛ рджреЛрдиреЛрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЬрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╕рд▓рд╛рд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдХреМрди рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣реИ? (рдкреВрд░реНрдг) рдХреНрдпрд╛ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ? (рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг) рдХреНрдпрд╛ рдпрд╣ рдЯреВрд▓ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ? рдХреНрдпрд╛ рдЙрдкрдХрд░рдг рдкреЛрд╕реНрдЯрдореЙрд░реНрдЯрдо рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдРрдк рдХреЗ рдЕрдВрджрд░?

рджреВрд╕рд░реЗ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдХрд┐рддрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдХрд░рдг рд▓рдЧрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╕рд╛рд░реНрдердХ рд▓рдЧрддрд╛ рд╣реИред рдЙрдкрднреЛрдХреНрддрд╛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдордЭреЗрдВрдЧреЗ рдФрд░ рдЙрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рд╕рд╛рд░реНрдердХ рд╣реИрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреЛ рдПрдХрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ 'рдЪрд░реНрдЪрд╛' рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЕрдЧрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рд╣рдо рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрджреНрдпрддрди рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд▓реЙрдЧ рдХрд░реЗрдВ рдФрд░ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

BrennanConroy picture BrennanConroy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Pixel-Lord picture Pixel-Lord  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ermithun picture ermithun  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Kevenvz picture Kevenvz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

bgribaudo picture bgribaudo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ