BTW: Not sure what the state of HTTP/2 support is in http_async_client.
If existent, and the server is HTTP/2, you can make multiple sequential and parallel requests over the same connection. Given Kamailio's concurrency and isolation model, this would probably mean sequential requests over multiple persistent connections attached to each process.
While HTTP backends are still characteristically sluggish from the perspective of the tight timing tolerances of traditional real-time communications, this would be a real game-changer and probably vacate much of what I'm saying, and the basis of my opposition to HTTP as an integration path out of Kamailio.
HTTP/1.1 is for these kinds of systems, though. If high throughput is your goal, I'd go a different route. Whatever you do to squeeze a few hundred requests/sec out of it will most likely amount to a Pyrrhic victory.
-- Alex
On Dec 19, 2024, at 2:06 pm, Alex Balashov abalashov@evaristesys.com wrote:
On Dec 19, 2024, at 1:54 pm, Ben Kaufman bkaufman@bcmone.com wrote:
Alex,
I read the OP's requirements like this. They want to implement a redirect server that will: • Receive a SIP INVITE • Make a single http request that has a RTT of 200ms • Copy a header from the HTTP reply to a SIP 300 reply • Handle the ACK for the reply
Is it your opinion this cannot be implemented reliably with Kamailio on a 4vCPUs and 4GB RAM host at a rate of 750 INVITE requests per second?
I have no idea. That's an empirical question. In my experience, that's an ambitious ask given the stochastic variation in HTTP API response time (i.e. it's not exactly and literally 200 ms), but it's probably possible with enough processes.
My only argument--from first principles-- is that you'll get a lot more throughput if you ditch HTTP, and I joined the conversation at the point at which Alexis Fidalgo expressed that async isn't a cure-all. I wanted to sign onto this sentiment.
-- Alex
-- Alex Balashov Principal Consultant Evariste Systems LLC Web: https://evaristesys.com Tel: +1-706-510-6800