Erlang http客户端在高负载下失败

时间:2015-02-02 14:49:21

标签: http erlang client

我有一些用Erlang编写的Web服务。由于一些请求,此服务调用Erlang中的另一个Web服务。第二个服务非常慢,有些请求执行时间达到一分钟。此服务的请求数量受到严格限制,我对此服务的所有请求都使用超时。我使用过不同的http客户端:gunhttpchackney等。启动系统按照预期运行几分钟后,会发送有限的请求数,但根本不会发送任何请求。所有http客户端都给出相同的结果这里描述的类似问题:http://comments.gmane.org/gmane.comp.lang.erlang.general/73146请给我一个建议,可能导致问题的原因是什么?我检查了ulimit和其他环境选项,一切正常。

1 个答案:

答案 0 :(得分:0)

你说你对所有的http客户端都有同样的行为,所以我认为你的代码是公共变量。

调试这个的好开始就是模拟HTTP调用。而不是

    {ok, Result} = httpc:request("http://my.oracle/dostuff")

使用

do_request(_Url) ->
    {ok, {200, <<"fake results">>}}.

....
% inside some other method
    {ok, Result} = do_request("http://my.oracle/dostuff")

如果这样做,请尝试修改do_request以长时间休眠(模拟服务器响应缓慢)。