[erlang-questions] Slow when using chained gen_server:call's, redesign or optimize?
Sat Jan 28 10:20:27 CET 2012
Instead of memcache you can use ETS which is "built in" and way faster.
Sent from my iPhone
On 28.01.2012, at 13:39, Gianfranco Alongi <> wrote:
> Could you put common memory-related operations into one single gen_server?
> Does this need to be gen_server at all?
> You could use the synchronized serialization to generate push-back
> behaviour from your system,
> so that you do not handle a new request before it's possible - maybe
> you are already doing this,
> or not.
> If you really want to find the bottlenecks, you could try with fprof
>> / Sat, Jan 28, 2012 at 1:06 AM, God Dang <> wrote:
>> I'm creating a system where I've ended up with alot of gen_servers that
>> provides a clean interface. When I run this under load I see that the
>> gen_server:call's is becoming a bottleneck.
>> For instance, In a handle_request I might ask an other gen_server to get me
>> a cached object, then ask the database something, then etc...
>> and in some cases I have
>> my-gen_server->cache-gen_server->memcache-client-gen_server as you see it
>> stacks up to alot of steps. I've tried to optimize with deferring gen_server
>> responses and that has given a slight performance improvement but not as
>> drastical as if I for instance bypass one gen_server instance.
>> Is there a better way to go about this or some smart optimization to do? And
>> FYI, I use gen_server when I need to keep a state of a connection or
>> something so if the answer is to scrap or reduce the number of gen_servers
>> I will need to keep those connections somewhere else.
>> Thanks, Dang
>> erlang-questions mailing list
> erlang-questions mailing list
More information about the erlang-questions