[erlang-questions] Sender punishment removed
Loïc Hoguin
essen@REDACTED
Tue Jan 23 14:09:42 CET 2018
How about adding this to gen_server directly? Perhaps as a new function?
I think this could be done with and without the expected processing time
in a fairly generic manner.
On 01/23/2018 02:05 PM, Jesper Louis Andersen wrote:
>
> call(Msg) ->
> gen_server:call({Msg, erlang:monotonic_time()}).
>
> receive
> {Msg, In} ->
> Out = erlang:monotonic_time(),
> Sojourn = erlang:convert_time_unit(Out - In, native, milli_seconds),
> case Sojourn > 5000 of
> true -> {reply, argh, State}
> false -> ...
> end
> end
>
> is usually a better way of tracking calls if you have overflow troubles.
> Sojourn tracking and head-drop from the FIFO is what CoDel does, and it
> works wonders on network connections. It can avoid having to process
> messages in the queue which already fell for a timeout. Better, you can
> do case (Sojourn + ExpectedProcessingTime) > ?LIMIT of ..., which can
> avoid doing work which will break the time limit anyway, proactively.
>
>
>
> On Tue, Jan 23, 2018 at 12:35 PM Guilherme Andrade <g@REDACTED
> <mailto:g@REDACTED>> wrote:
>
> On 23 January 2018 at 10:30, Max Lapshin <max.lapshin@REDACTED
> <mailto:max.lapshin@REDACTED>> wrote:
>
> 1) client comes to HTTP
> 2) http handler makes gen_server:call to singleton server
> 3) waits for 5 or 60 seconds and then exits, but message is
> already in process queue
> 4) server fetches this useless message from mailbox and starts
> making useless expensive operations
> 5) meanwhile client makes another duplicate request and again
> fills singleton mailbox with the same request
>
>
> I've recently started to explore sbroker[1] as an alternative (in
> some cases) and I've been getting very interesting results.
>
> Then again it's also (IIRC) backed by single processes that might
> become a bottleneck themselves, but at least those processes aren't
> doing anything else. Also, because it's this big toolkit with a lot
> of bells and whistles, it's easy to shoot yourself in the foot if
> you're not already acquainted with some of the abstractions, and so
> there might be somewhat of a learning curve.
>
> [1]: https://github.com/fishcakez/sbroker
>
> --
> Guilherme
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
--
Loïc Hoguin
https://ninenines.eu
More information about the erlang-questions
mailing list