inets 的http client在大量请求调用时有错误

尝试使用ErLang的inets模块中的HTTP客户端进行高并发请求时遇到错误。当单个或多个进程发起数千次请求后,出现bad_return_value等错误。尝试复现Richard Jones的百万用户Comet应用中的floodtest示例也遇到相同问题。
试了下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大牛们给解释下吧
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值