ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

[Erlang_Question32]ibrowse流程及性能测试

来源:网络整理     时间:2015-12-16     关键词:github

本篇文章主要介绍了"[Erlang_Question32]ibrowse流程及性能测试",主要涉及到github方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 1.简介ibrowse是用erlang写的一个HTTP client.github地址:https://github.com/cmullaparthi/ibro...

1.简介

ibrowse是用erlang写的一个HTTP client.github地址:https://github.com/cmullaparthi/ibrowse 使用方法见项目的readme。

2.流程

ibrowse:start ---> 为每一个{host,port}创建一个ibrowse_lb的gen_server进程,用于管理此{host, port}下的连接状态。

它会根据配置中的maxsession创建ibrowse_http_client的work(:gen_server)是用来创建实际的连接。每个work可以同时处理maxpipe个连接。

如果你不在priv/ibrowse.conf 里面配置,max_sessions max_pipe_size都是10,如果想大并发使用,请务必根据实际情况测试,然后选择适当的参数。

它有自己的负载均衡(load balance)机制:用Orderedi set ets ibrowse_lb优选进程中的每个session同时处理的连接数中最少的session。

如果你不想使用load balance机制:你可以使用

ibrowse:start_worker_process/1ibrowse:send_req_direct/4,5,6,7,
ibrowse:stop_work_process/1

来自己管理负载。

3.性能测试

可以使用https://github.com/talko/httpcbench 来对erlang写的这几个主流HTTP client做下测试。

最好把里面的http请求都改成自己实际的请求地址。

4.配置说明

%%priv/ibroswer.conf
{dest,HostName1,Portnumber1,MaxSessions,MaxPipelineSize,Options}
{dest,HostName2,Portnumber2,MaxSessions,MaxPipelineSize,Options}

    

4.1 为每一对{Host,Port}最多创建MaxSessions;
4.2 每个session最多可同时处理MaxPipeLineSize;
4.3 如果所有的session都达到了Max,就会返回重试三次后返回{error,try_later};
4.4 Options为connect网络参数。可见文档:

[Erlang_Question32]ibrowse流程及性能测试[Erlang_Question32]ibrowse流程及性能测试

%% optionList() = [option()]%% option() = {max_sessions, integer()}        |%%          {response_format,response_format()}|%%          {stream_chunk_size, integer()}     |%%          {max_pipeline_size, integer()}     |%%          {trace, boolean()}                 | %%          {is_ssl, boolean()}                |%%          {ssl_options, [SSLOpt]}            |%%          {pool_name, atom()}                |%%          {proxy_host, string()}             |%%          {proxy_port, integer()}            |%%          {proxy_user, string()}             |%%          {proxy_password, string()}         |%%          {use_absolute_uri, boolean()}      |%%          {basic_auth, {username(), password()}} |%%          {cookie, string()}                 |%%          {content_length, integer()}        |%%          {content_type, string()}           |%%          {save_response_to_file, srtf()}    |%%          {stream_to, stream_to()}           |%%          {http_vsn, {MajorVsn, MinorVsn}}   |%%          {host_header, string()}            |%%          {inactivity_timeout, integer()}    |%%          {connect_timeout, integer()}       |%%          {socket_options, Sock_opts}        |%%          {transfer_encoding, {chunked, ChunkSize}} | %%          {headers_as_is, boolean()}         |%%          {give_raw_headers, boolean()}      |%%          {preserve_chunked_encoding,boolean()}     |%%          {workaround, head_response_with_body}     |%%          {worker_process_options, list()}%%
%% stream_to() = process() | {process(), once}%% process() = pid() | atom()%% username() = string()%% password() = string()%% SSLOpt = term()%% Sock_opts = [Sock_opt]%% Sock_opt = term()%% ChunkSize = integer()%% srtf() = boolean() | filename() | {append, filename()}%% filename() = string()%% response_format() = list | binary
View Code

流程图可见:https://github.com/zhongwencool/issue_blog/tree/master/freemind  使用freemind记录。

[Erlang_Question32]ibrowse流程及性能测试

first try SSL using Erlang

[Erlang_Question32]ibrowse流程及性能测试

以上就介绍了[Erlang_Question32]ibrowse流程及性能测试,包括了github方面的内容,希望对其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_248532.html

相关图片

相关文章