Signalr: SignalR์—์„œ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜

์— ๋งŒ๋“  2017๋…„ 01์›” 30์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: SignalR/SignalR

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

#3589์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์œˆ๋„์šฐ ์„œ๋น„์Šค๋กœ ํ˜ธ์ŠคํŒ…๋˜๋Š” signalR ๋ฒ„์ „ 2.2.0์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด ์„œ๋น„์Šค๋Š” ์ˆ˜๋ฐฑ ๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ € ํด๋ผ์ด์–ธํŠธ์— ๊ณ ์ฃผํŒŒ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฑฐ๋ž˜ ๋น„์œจ์„ ํ‘ธ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„ ์„œ๋น„์Šค๊ฐ€ ๋ˆ„์ถœ๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๋คํ”„๋ฅผ ์บก์ฒ˜ํ•˜์—ฌ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ๋ช‡ ๋ถ„ ์ •๋„ ์†Œ์š”๋œ ๊ธฐ๋ณธ ๋คํ”„์™€ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

capture

๋ณด์‹œ๋‹ค์‹œํ”ผ SignalR ํด๋ž˜์Šค๊ฐ€ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋คํ”„์— ๋Œ€ํ•œ ๋งํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค .

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ•˜์ง€๋งŒ ์ด๊ฑด ๋””์ž์ธ ๋ฌธ์ œ๋กœ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์…”์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”...

ํ™•์‹คํžˆ ์šฐ๋ฆฌ๋Š” ASP.NET Core์šฉ SignalR๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

SignalR์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ์—ฐ๊ฒฐ๋‹น ๋ง ๋ฒ„ํผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ๋Š” 1000๊ฐœ ๋ฉ”์‹œ์ง€(์—ฐ๊ฒฐ๋‹น)์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ๋ฒ„ํผ๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ํ•ด์ œ(์‹ค์ œ๋กœ ์ƒˆ ๋ฉ”์‹œ์ง€๋กœ ๋Œ€์ฒด๋จ)๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. IConfigurationManager.DefaultMessageBufferSize ๊ตฌ์„ฑ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ์˜ ์ตœ์†Œ ํฌ๊ธฐ๋Š” 32์ž…๋‹ˆ๋‹ค(SignalR์— ์˜ํ•ด ์‹œํ–‰๋จ). ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋ฉด ๋ฉ”์‹œ์ง€ ๋ˆ„๋ฝ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค(์˜ˆ: ์žฌ์—ฐ๊ฒฐ ์ค‘).

๊ณ ๋งˆ์›Œ ์นœ๊ตฌ, ๊ทธ ๋ง ๋ฒ„ํผ์— ๋Œ€ํ•ด ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„ํผ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ SignalR(32)์—์„œ ํ—ˆ์šฉํ•˜๋Š” ์ตœ์†Œ๊ฐ’์œผ๋กœ ์ค„์ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํด๋ผ์ด์–ธํŠธ๋Š” ํ˜„์žฌ ๊ตฌ๋…์„ ๋ชจ๋‘ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์—ฐ๊ฒฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ด€๋ จ ๊ทธ๋ฃน ๋ฐ ์ด๋ฒคํŠธ์— ๋‹ค์‹œ ๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.

๋ง ๋ฒ„ํผ์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ X๊ฐ€ ๊ทธ๋ฃน A์— ๋“ฑ๋กํ•˜๋ฉด 1000๊ฐœ ๋ฉ”์‹œ์ง€์˜ ์ƒˆ๋กœ์šด ๋ง ๋ฒ„ํผ๊ฐ€ A ๊ทธ๋ฃน์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ ํ•ด์ œ๋˜๋ฉด ํ•ด๋‹น ๋ง ๋ฒ„ํผ๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๊นŒ? (ํ•ด๋‹น A ๊ทธ๋ฃน์— ๊ฐ€์ž…ํ•œ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—†๋‹ค๊ณ  ๊ฐ€์ •)
  2. ์—ฐ๊ฒฐ์ด ์˜ค๋žซ๋™์•ˆ ํ™œ์„ฑ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช‡ ์‹œ๊ฐ„์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํผ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  1000๊ฐœ์˜ ๋ฉ”์‹œ์ง€๊ฐ€ GC์— ์˜ํ•ด ์ฒด์ธ์„ ๋”ฐ๋ผ Gen2๋กœ ์ด๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ณต์ •ํ•ฉ๋‹ˆ๊นŒ?

1) ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ† ํ”ฝ(๋ง ๋ฒ„ํผ ํฌํ•จ)์„ ์‚ญ์ œํ•˜๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค - https://github.com/SignalR/SignalR/blob/dev/src/Microsoft.AspNet.SignalR.Core/Messaging/MessageBus. cs#L324
2) ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜๋Š” ์†๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฉ”์‹œ์ง€ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด 2์„ธ๋Œ€๋กœ ์Šน๊ฒฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ตฌ์„ฑ์œผ๋กœ ํ”„๋กœ๋•์…˜์— ์ผ์ฃผ์ผ ํ›„์— ๋” ์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๊ฑด ๋””์ž์ธ ๋ฌธ์ œ๋กœ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์…”์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”...

ํ•˜์ง€๋งŒ ์ด๊ฑด ๋””์ž์ธ ๋ฌธ์ œ๋กœ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ƒ๊ฐํ•˜์…”์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์š”...

ํ™•์‹คํžˆ ์šฐ๋ฆฌ๋Š” ASP.NET Core์šฉ SignalR๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@moozzyk @OfirYemini ์„œ๋ฒ„ ํ—ˆ๋ธŒ์˜ ๊ตฌ์„ฑ์€ ๋ฌด์—‡์ด์—ˆ์Šต๋‹ˆ๊นŒ? GlobalHost.Configuration.DefaultMessageBufferSize ์„ 32 ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ์™ธ์— ์–ด๋–ค ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์žˆ๋‹ค๋ฉด ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ํ†ต์ฐฐ๋ ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

DefaultMessageBufferSize๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋ฒ„ํผ๋ฅผ ๋” ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ์œ ์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”!

์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์— ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

image

์ด ๊ฒฝ์šฐ DefaultMessageBufferSize = 32๊ฐ€ ๋„์›€์ด ๋ ๊นŒ์š”?

๋„ค ๋กœ๋งŒ, ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰