Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API

From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
retoor81443dOutbound? Like the amount of api calls it can do concurrently? Else I would call it inbound I guess. 128 is freaking nothing if you have websockets. Set keep alive off maybe.
-
What the heck this sounds weird! Wish I could see your code so I can understand.
-
@Chewbanacas Oh yes, lol. When you just get a white page, you F5, still a white page, well, you notice.
Except for users who, by chance, were on a non-loaded server, and they were like, "Everything is fine!" -
@retoor Outbound yes, but not "calls."
Connections.
So when a user connects to the platform, there is 1 connection created from the platform to the API server (I simplify a bit). During this user's usage (any API calls), everything goes through this 1 channel.
The limit was 128 channels opened, not 128 parallel requests.
The RIGHT solution is " Only have 1 chanel for ALL connected users. -
@iSwimInTheC Brief version, very simplified:
`services.AddScoped<HttpClient>()`
Vs what it SHOULD BE:
`services.AddSingleton<HttpClient>()` -
retoor81442d@NoToJavaScript I have no idea what you actually mean with channels instead of paralel connections. There is no such things as channels. If it's a http2 thing, I'm sure they can't and won't limit it. But again, channels seems made up. I wrote balancers and servers and everything, actually have read books about networking and sockets and no clue what a channel must be and how it could be limited.
-
@retoor Ok, I simplified a lot.
‘Connection’ in this context is an outbound SNAT connection, which is different from opening a socket.
SD, even if our “blazor” server and “ApiServer” are both living inside the same Azure subscription, they use outside connection, which is limited.
More info:
https://learn.microsoft.com/en-us/... -
retoor81441d@NoToJavaScript @BordedDev already explained. It's pure to have map it trough an shared IP? C'mon, ipv6 is free. A constrain on this is sad and a reason to move from service for sure. I'm so happy since I went dedicated. Unlimited ipv6, also outbound and dedicated resources. Also, costs nothing compared to vps. It's 42,- per month from hetzner auctions and you have a server where you can run many vpses on. Starting from 64gb ram or so. No limits.
For me a bit too complex, I prefer cli management, but opennebula (one) is a professional tool to manage a vps server. It requires some learning tho. But I decidee that just docker containers more fit my needs. Just like them more. I'm swimming in resources now.
TL;DR : I did not read the fucking manual.
Story :
We have a particular kind of setup with Blazor Server-side. And it does not use any SQL, bbut calls APIs.
The class to call APIs was scoped to create one new HTTP connection per new tab (even if the user opens a new tab, it's a new HttpClient).
We were fine. I read that we have 65k ports and disposal takes around 2 minutes, and we have around 1000 users. So it went into the "backlog, where things go to die."
Hard core duiscovery in the past 2 days.
Azure service plan for webapps only allows you 128 outbound connections!
System, we reboot it manually every 4 hours, while I'm working to make HttpClient unique lol
I just needed a break and vent. And "Hey kids, know that Azure service plan is only 128 sockets, not 65536."
rant