рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ NodeJS рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 6 рдЫреЛрдЯреЗ рд╕реБрдЭрд╛рд╡

рд▓реБрдХ-рдП-рд▓рд╛рдЗрдХ рдлреЗрд╢рд┐рдпрд▓ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рд╕рд░реНрд╡рд┐рд╕ рдиреЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХреА рд╣реИред

NodeJS рдкрд░ рдПрдХ рд╢реМрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдПрдХ рдЦреБрд╢реА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрди рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд▓рдВрдмреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рдЧреНрд▓рд┐рдЪ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


MyHeritage рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ рдпреВрд░реЛрд╡рд┐рдЬрд╝рди 2019 рдХреЗ рд▓рд┐рдП рдбреЛрдкреЗрд▓рдЧреЗрдВрдЧрд░ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде, рдПрдХ рд╕реЗрд▓реНрдлреА рдЕрдкрд▓реЛрдб рдХрд░рдХреЗ, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреНрд░рддрд┐рдпреЛрдЧреА рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рдорд╛рди рд╣реИрдВред


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


рдмрд╣реБрдд рдЬрд▓реНрджреА, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдСрдЯреЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рдордиреЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЗ рд╣рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреА:


  1. рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдмреБрд░реЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдВ: рдорд╛рдкреЗрдВ рдХрд┐ рдХрд┐рддрдиреЗ рд╕рдорд╡рд░реНрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдордп рдПрдХреНрд╕ (рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ) рдореЗрдВ рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ EC2 рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 200 рд╕реЗрдХрдВрдб рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдореЗрдВ 10,000 рд╕рдорд╡рд░реНрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рд╣рдореЗрдВ рдмрд╕ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП 50 рд╕рд░реНрд╡рд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ JMeter рдирд╛рдордХ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

    рдФрд░ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдиреЗ рдорд╛рдк рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХреАред
  2. рддрд╛рд▓реЗ рд╕реЗ рдмрдЪреЗрдВ: рдмреНрд▓реЙрдХрд┐рдВрдЧ рдСрдкрд░реЗрд╢рди (рдЬреИрд╕реЗ fs.readSync ) рдЖрдХрд░реНрд╖рдХ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХреНрд▓реАрдирд░ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп async / await рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди, CPU рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ ( рдЗрд╡реЗрдВрдЯ рд▓реВрдк рджреЗрдЦреЗрдВ)ред

    рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ: const res = fs.readSync('file.txt');
    const res = fs.readSync('file.txt');
    рдХреЗ рдмрд╛рдж: const res = await fs.readAsync('file.txt');
  3. рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдмрдврд╝рд╛рдПрдБ: Node рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 1 рдЬреАрдмреА рдХреА рд╕реАрдорд╛ рддрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдХреЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 4 GB рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рдХрддрдо рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: - --max-old-space-size
    --max-old-space-size
    рдЙрджрд╛рд╣рд░рдг: node --max-old-space-size=4096 server.js
  4. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Node рдПрдХ рд╣реА рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдЪрд▓рд╛рдПрдЧрд╛, рддреЛ 1 рдХреЛрд░ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рдЪреБрдирдХрд░ рдкреИрд╕реЗ рдмрдЪрд╛рдПрдВред
  5. рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░реЗрдВ: рдордЬрдмреВрд░ HTTPS рдФрд░ рд╕рднреА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЙрдЪреНрдЪрддрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЙрдХреНрд╕реА рдкрд░)ред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рд╡рд┐рдЪрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд▓рдн рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред
  6. рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ: рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Logz.io/AWS CloudWatch рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИрдВред рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрд╕реНрдд рдЬреИрд╕реА рд╕реЗрд╡рд╛рдУрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджреЗрд╢ рдЖрдорддреМрд░ рдкрд░ рдереЛрдХ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдЪреИрдирд▓ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ NodeJS рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрд╕реНрдЯрди рдирд╛рдордХ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдиреЗ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рджрд╕ рдЧреБрдирд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрд╡рдЪреНрдЫ рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдЬрдм рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреА рдереАред


рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles