์๋
ํ์ธ์ API์๋ฒ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ ๊ฐ๋ฐ์์
๋๋ค.
Api๋ฅผ ํธ์ถํด์ ํน์ ์์
์ ์คํํ ๋ค์ HttpResponseMessage๋ฅผํตํด ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ ํ๊ณ ์์ต๋๋ค.
๋ค๋ง ์ง๊ธ ๋ฌธ์ ๊ฐ ํ๋์๋๊ฒ ๊ฐ์ ธ์์ผํ ๊ฐ์ด ๋ง์์ ธ์ ์๊ฐ์ด ๋์ด๋๋ฉด(์ฝ 3๋ถ์ด์) ํด๋ผ์ด์ธํธ ๋จ์์ Status 500 / Timeout์ html ํ๊ทธ๊ฐ ๋ฆฌํด๋๊ณ ์์ต๋๋ค. Api๋ด ๋ก๊ทธ๋ ๋ด๋ถ๋ก์ง์ด ๋ค ์คํ ๋ ํ Return ๊น์ง ์์
์ ํ๋ ๋ถ๋ถ๊น์ง ๋ก๊ทธ๊ฐ ์ ์์ ์ผ๋ก ์์ฌ์์ต๋๋ค.
ํธ์ถํ๋ ํด๋ผ์ด์ธํธ ๋จ์์๋ Timeout์ ๋ฐฉ์งํ๊ธฐ์ํด 10๋ถ์ผ๋ก ์ค์ ํด๋ ์ํ์ด๊ณ PostMan์์๋ -1 ์
ํ
์ํตํด ๋ฌด์ ํ์ผ๋ก ์ค์ ํด๋์๋๋ฐ๋ ์ด๋ ๊ฒ ๋์ค๊ณ ์์ต๋๋ค.
ํน์ Api์๋ฒ๋จ์์๋ ๋ญ๊ฐ ์
ํ
ํ ๊ฒ ์์์ง ์ ๋ชจ๋ฅด๊ฒ์ด์โฆ ๋์์ ๊ตฌํ๊ณ ์ ๊ธ์ ๋จ๊ฒจ๋ด
๋๋คโฆ ใ
ใ
2๊ฐ์ ์ข์์
nyjin
2
ASP.NET ๋ฒ์ ๊ณผ IIS, NGINX ์น ์๋ฒ ์ ๋ฌด์ ๋ฐ๋ผ ์ค์ ์ด ๋ง์ด ๋ฌ๋ผ์ง๋๋ฐ์.
์ด๋ป๊ฒ ๋์๋์?
ASP.NET ๋ฒ์ ์ ์ด 3๊ฐ์ง๋ก ๋๋๋ค์.
- ASP.NET Core web.config๋ฅผ ์ฌ์ฉํ๋ ๋ฒ์
- ASP.NET Core web.config๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฒ์
- ASP.NET Core๊ฐ ์๋ ์ด์ ๋ฒ์
3๊ฐ์ ์ข์์
์๋
ํ์ธ์ ํ์ .NET Core๋ฅผ ์ฌ์ฉํ์ง์๋ ๋ฒ์ ์ธ .NET Framework 4.8 ์
๋๋ค!
๊ทธ๋ฆฌ๊ณ ์๋ฒ๊ฐ์๊ฒฝ์ฐ๋ Azure WebApp์ ์ด์ฉํ๊ณ ์์ต๋๋ค. ( Azure ๊ฐ์๊ฒฝ์ฐ WebApp๊ฐ์๊ฒฝ์ฐ PaaS ํํ์ ์๋น์ค๋ผ IIS๋ฅผ ๋ณ๋๋ก ์ปจํธ๋กค ํ ์๋ ์๋๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค. ๋ฒ์ ์ ๋ ์ต์ ๋ฒ์ ์ ์ ์งํ๋ค๊ณ ํฉ๋๋ค.)
๋๋ฌด ์ ์ค๋ช
์ด ์งง์๋๊ฒ ๊ฐ์ ๋ถ์ฐ์ค๋ช
์ ๋๋ฆฌ์๋ฉด
ํด๋น api๋ ๋ฐ์ดํฐ๋ฅผ ํ ์๋ฒ์ ์ ์กํ๋ api ์ธ๋ฐ 1~50๊ฑด ๊น์ง๋ ๋ฌธ์ ์์ด ๋์์ ํ๋ 50๊ฑด ์ดํ๋ก๋ ์ด์๊ฐ์๊ธฐ๋ ๋ถ๋ถ์
๋๋ค. ๋ํ Api ๊ตฌ๊ฐ๋ณ๋ก ๋ก๊ทธ๋ ๋ค ๋จ๊ฒจ๋๋ฉฐ ๋ง์ง๋ง์ Response๋ฅผ ๋ฐํํ๊ธฐ์ ์๋ ๋ก๊ทธ๋ฅผ ์ฐ์ด๋ก๋๋ค. ํ์ฌ ์ด์๊ฐ๋๋ ํ์์ด ๋ฐ์ํ๋๋ผ๋ ํด๋น ๋ก๊ทธ์๋ ์ ์์ ์ธ ์คํ์ ๋ค ๋์๋ค๊ณ ๋์ค๊ณ ๋ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ค์ ๋ก Api๋ ๋ค ๋์์ ํ๋ ์์ฒญ์์ธ ํด๋ผ์ด์ธํธ ์ธก์ ์ ๋ฌ๋๋ ๋ฉ์์ง๋
Status 500๊ณผ ์๋์ ๊ฐ์ Request Timed Out์ด๋ฉฐ ์ค๋ฅ๋ฉ์์ง๋ ๋ถ๋ช
์ง์ ๋ ์๊ฐ๋ด์ ์๋ต์ ๋ชปํ๋ค๊ณ ํ๋ ๋ถ๋ถ์ด๋ ์ฐ์ ํด๋ผ์ด์ธํธ ๋จ์์ ์์ฒญ์ timeout์ ๋ฌดํ๋๋ก ๋ฐ๊ฟ์ ํ
์คํธํด๋ดฃ์ผ๋ ๊ทธ๋๋ ๋ฐ์์ ํด์ ์๋ฒ์ธก์ ์ด์๊ฐ ์๋๊น ํ๋๋ฐฉํฅ์ผ๋ก ์ฐพ์๋ณด๋ค ์ง๋ฌธ๋ ๋จ๊ธฐ๊ฒ๋ซ์ต๋๋ค ใ
500 - The request timed out.
500 - The request timed out.
The web server failed to respond within the specified time.
2๊ฐ์ ์ข์์
nyjin
4
ASP.NET .net framework 4.8 webapi ์คํ ์๊ฐ ์กฐ์ ๋ฐฉ๋ฒ ๊ณต์ ๋๋ฆฝ๋๋ค.
web.config์ ์๋ ๊ฐ์ ์ค์ ํ์๋ฉด ๋ฉ๋๋ค.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<httpRuntime executionTimeout="110" />
</system.web>
</configuration>
์ฝ๋๋ก๋ Controller์ ์๋์ ๊ฐ์ด ์ค์ ํ์๋ฉด ๋ฉ๋๋ค.
HttpContext.Current.Server.ScriptTimeout = 300;
์ ๊ฐ ์๋ Azure WebApp์ด๋ฉด Azure App Service๋ฅผ ๋ง์ํ์๋ ๊ฒ ๊ฐ์๋ฐ์.
https://azure.microsoft.com/ko-kr/services/app-service/#overview
web api์ ์ฒ๋ฆฌ์๋ ๋ฌด๊ดํ๊ฒ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์๋๋ ๊ฒ ๊ฐ๋ค๋ ๋ง์ํ์
์ ์ฐพ์ ๋ดค๋๋ฐ Azure App Service์ ํฌํจ๋ Azure Load Balancer์ timeout์ด 230์ด๋ผ๊ณ ํ๋ค์.
์์์ ๋ง์๋๋ฆฐ web.config ์ค์ ๋ณ๊ฒฝ ํ ์๊ฐ ์ฒดํฌ ํด ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค.

์์๋ ๊ฒ์ฒ๋ผ 230์ด๋ ๊ฒฐ์ฝ ์งง์ ์๊ฐ์ด ์๋๊ธฐ์ ๊ฐ๋ฅํ๋ค๋ฉด ๋ง์ ๊ฑด์๊ฐ ํฌํจ๋ ๊ฒฐ๊ณผ๋ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ํ์๋ฉด ์ด๋จ๊น ์ถ์ต๋๋ค.
WebAPI ์์ฒญ์ offset, pageSize ๋ฅผ ํฌํจํ์ฌ ์์ฒญํ๊ณ 1 ~ 50, 51 ~ 100, 101 ~ 150 ๋ฑ ๋๋์ด์ ๋ฐ๋๋ค๋ฉด ๊ทผ๋ณธ์ ์ธ ์ด์๊ฐ ํด๊ฒฐ๋์ง ์์๊น ์กฐ์ฌ์ค๋ฝ๊ฒ ์๊ฒฌ ๋๋ฆฝ๋๋ค.
2๊ฐ์ ์ข์์
์น์ ํ ์์๋ด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
excutionTimeout๊ฐ์๊ฒฝ์ฐ์๋ ๋ฏธ๋ฆฌ ์์ ์ ํด๋ณด์์๋๋ฐ ์ด๋ฏธ ์๋์์์ต๋๋ค.
๋ค๋ง Azure ๋ก๋๋ฒจ๋ฐ์์ ์๊ฐ์ด 230์ด๋ผ๋๋ถ๋ถ์ ๋๋ถ์ ์์๊ฐ๊ฒ๋ฉ๋๋ค!! ํด๋น๋ถ๋ถ์ ์ฐธ๊ณ ํ์ฌ ์์
์ ์งํํด๋ด์ผ๊ฒ ์ต๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ ์ ์์ฃผ์ ๋ถ๋ถ์ ํ์ฌ Api์์ฒด๊ฐ APiํธ์ถ ํ ํด๋น์๋ฒ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๋ฐํํด์ฃผ๋๊ฒ ์๋๋ผ ๋ค๋ฅธ Api๋ฅผํธ์ถํ์ฌ ๊ฐ์ ธ์ค๋ ๋ถ๋ถ์ด๋ผ ํ์ฌ ์ด์๊ฐ ๋๋ Api๋จ์์๋ ํ์ด์ง์ฒ๋ฆฌ๊ฐ ์ฌ์ค ์ข ์ด๋ ค์ด๋ถ๋ถ์ด ์์ต๋๋ค. ์ฒ์์ 50๊ฑด๊น์ง๋ ์ ๋์์ผ๋ ๊ทธ ํ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์๋ํ๋ค ์๋ฌ๊ฐ ๋๋๋ถ๋ถ์ด๋ผ ์ ๋น์ด ํธ์ถํ๋ ์ธก๊ณผ ํ์ด์ง์ฒ๋ฆฌ๋ฅผํจ๊ป ํ๋๋ฐฉํฅ์ผ๋ก ๋
ผ์๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ง์ฌ์ด๋ฆฐ ์กฐ์ธ ๋๋จํ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
3๊ฐ์ ์ข์์