试了下inets的http client,调用http:request方法,在单个进程内少量调用,或多个进程内少量调用都没有问题,但是只要调用次数达到几千以上,就会报错
错误信息基本就是bad_return_value,invalid version等等
不知道有没有人试过 大名鼎鼎的Richard Jones在 A Million-user Comet Application with Mochiweb里面的那个floodtest的例子,一样会报这个错误
receive
{http,{_Ref,stream_start,_X}} -> recv({Active+1,Closed,Chunks});
{http,{_Ref,stream,_X}} -> recv({Active, Closed, Chunks+1});
{http,{_Ref,stream_end,_X}} -> recv({Active-1, Closed+1, Chunks});
{http,{_Ref,{error,Why}}} ->
io:format("Closed: ~w\n",[Why]),
recv({Active-1, Closed+1, Chunks});
{loadurl, Url} ->
http:request(get, {Url, []}, [], [{sync, false}, {stream, self}, {version, 1.1}, {body_format, binary}]),
recv(Stats)
end.
这段代码是单个进程运行的,另外一个进程不断发{loadurl,url}的消息,让httpclient 不停调用request方法
我试了,用多个进程不停调用这个一样会报错,但是只要调用次数比较少,就不会出错,服务器端的资源限制等都没有任何问题
呼唤javaeye上的erlang大牛们给解释下吧
分享到:
相关推荐
erlang-inets-19.3.6.4-1.el7.x86_64.rpm
mod_xsl-用于Inets erlang Web服务器的XSL转换模块
1> inets:start(). ... 2> Auth = {"ngerakines", "secretpassword!"}. 3> twitter_client:status_mentions(Auth, []). twitter_client:status_mentions({"ngerakines", "secretpassword"}, []). [{status,"Mon Nov...
依存关系共享给otter和公共库函数是常见的测试依赖项(即不属于生产版本) 为了避免外部依赖性,默认情况下,OTTER使用OTP inets HTTP客户端(httpc)将跨度发送到跟踪收集器。 但是,htc在高吞吐量方案中的声誉相当...
生成签名的功能(客户端),验证签名的功能(服务器端),以及一些用于发出OAuth HTTP请求的便捷功能(客户端)。 Erlang / OTP兼容性 Erlang / OTP 21或更高版本。 Rebar3兼容性 将erlang-oauth作为依赖项添加到您...
简单桥 通过创建标准化接口,SimpleBridge减轻了对多个Erlang HTTP服务器进行编码的麻烦。 它目前支持Cowboy,Inet,... 这意味着您可以在Inets,Mochiweb和Webmachine上运行websocket ,而本机都不支持Websockets。
休息服务简单的基于牛仔的 REST web 服务... ok 与服务交互: 1 > inets : start (). ok 2 > httpc : request ( get , { " http://localhost:8080/resource/123 " , []}, [], []). { ok ,{{ " HTTP/1.1 " , 404 , " No
根据在名称中愚蠢的位置插入“ erl”的实际惯例命名。 这主要是围绕httpc的便利包装。 例子: erl - pa ebin - boot start_sasl - s inets - s xmerl - s mechanizerl 1 > Mech = mechanizerl : new (). { ...