Skip to content

[Blazor server-side] Better server-side limits #9117

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
javiercn opened this issue Apr 5, 2019 · 1 comment
Closed

[Blazor server-side] Better server-side limits #9117

javiercn opened this issue Apr 5, 2019 · 1 comment
Labels
area-blazor Includes: Blazor, Razor Components enhancement This issue represents an ask for new feature or an enhancement to an existing one
Milestone

Comments

@javiercn
Copy link
Member

javiercn commented Apr 5, 2019

  • We rely on signalr for handling delivery and order of messages.
  • Currently we continue rendering when a client disconnects in case the client connects back and simply queue pending batches.
  • We should have a limit on the number of batches that we are willing to produce once a client disconnect and "pause" the rendering
    after that.
    • Pausing the rendering process means:
      • We stop processing the render queue and instead we place render requests into a separate pause queue.
      • We process the pause queue only when the client reconnects (by dispatching the paused elements into the regular queue).
      • When a component requests a new render:
        • We place it on the queue if there is no existing pending request for that component.
    • We replace the old render request with the new one if it is already on the queue.
  • Pausing the rendering has the following advantages:
    • We don't keep adding batches and increasing the consumed memory as a consequence.
    • We don't do unnecessary work when the client is not connected.
    • We limit the memory consumed per client to at most the number of components rendered in the app.
    • We can pause the rendering during prerendering to produce the output without buffering it before.
@blowdart blowdart added the area-mvc Includes: MVC, Actions and Controllers, Localization, CORS, most templates label Apr 7, 2019
@mkArtakMSFT mkArtakMSFT added area-blazor Includes: Blazor, Razor Components enhancement This issue represents an ask for new feature or an enhancement to an existing one labels Apr 8, 2019
@mkArtakMSFT mkArtakMSFT added this to the Backlog milestone Apr 8, 2019
@mkArtakMSFT mkArtakMSFT removed area-mvc Includes: MVC, Actions and Controllers, Localization, CORS, most templates labels May 9, 2019
@danroth27
Copy link
Member

We'll consider these items as part of #10472

@mkArtakMSFT mkArtakMSFT reopened this Jun 26, 2019
@ghost ghost locked as resolved and limited conversation to collaborators Dec 3, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-blazor Includes: Blazor, Razor Components enhancement This issue represents an ask for new feature or an enhancement to an existing one
Projects
None yet
Development

No branches or pull requests

4 participants