diff --git a/src/dubbo_invoker.erl b/src/dubbo_invoker.erl
index f7c9685..7b72492 100644
--- a/src/dubbo_invoker.erl
+++ b/src/dubbo_invoker.erl
@@ -40,8 +40,7 @@
                     Request2 = merge_attachments(Request,RpcContext),
                     {ok,RequestData} = dubbo_codec:encode_request(Request2),
                     Ref=get_ref(RequestState),
-                    RequestState2 = request_context:update(<<"t_agent_e">>,RequestState),
-                    gen_server:cast(Pid,{send_request,Ref,Request2,RequestData,CallBackPid,RequestState2}),
+                    gen_server:cast(Pid,{send_request,Ref,Request2,RequestData,CallBackPid,RequestState}),
                     case is_sync(RequestState) of
                         true->
                             sync_receive(Ref,get_timeout(RequestState));
diff --git a/src/dubbo_netty_client.erl b/src/dubbo_netty_client.erl
index d837b0f..e5dc72c 100644
--- a/src/dubbo_netty_client.erl
+++ b/src/dubbo_netty_client.erl
@@ -113,11 +113,10 @@
     {stop, Reason :: term(), NewState :: #state{}}).
 
 handle_cast({send_request,Ref,Request,Data,SourcePid,RequestState}, State) ->
-    RequestState2 = request_context:update(<<"t_net_b">>,RequestState),
     logger:debug("[send_request begin] send data to provider consumer mid ~p pid ~p sourcePid ~p",[Request#dubbo_request.mid,self(),SourcePid]),
     NewState = case send_msg(Data,State) of
         ok->
-            save_request_info(Request,SourcePid,Ref,RequestState2),
+            save_request_info(Request,SourcePid,Ref,RequestState),
             logger:debug("[send_request end] send data to provider consumer pid ~p state ok",[self()]),
             State;
         {error,closed}->
@@ -359,8 +358,7 @@
             case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
                 undefined->
                     logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
-                {SourcePid,Ref,RequestState} ->
-                    RequestState3 = request_context:update(<<"t_net_e">>,RequestState),
+                {SourcePid,Ref,_RequestState} ->
                     {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
 
                     logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
@@ -394,13 +392,8 @@
         undefined->
             logger:error("dubbo response can't find request data,response ~p",[Response]);
         {SourcePid,Ref,RequestState} ->
-%%            RequestState2 = request_context:update(<<"t_net_b">>,TmpTime,RequestState),
-            RequestState3 = request_context:update(<<"t_net_e">>,RequestState),
-%%            logger:debug("will cast mid ~p to source process SourcePid ~p",[Response#dubbo_response.mid,SourcePid]),
             RpcContent=[],
-%%            ResponseData = de_type_transfer:response_to_native(Response),
-%%            logger:debug("one response ~p",[Response]),
-            gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState3})
+            gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState})
     end,
     {ok,State};
 process_response(true,Response,State,TmpTime)->
diff --git a/src/request_context.erl b/src/request_context.erl
deleted file mode 100644
index 6d40d48..0000000
--- a/src/request_context.erl
+++ /dev/null
@@ -1,115 +0,0 @@
-%%%-------------------------------------------------------------------
-%%% @author dlive
-%%% @copyright (C) 2018, <COMPANY>
-%%% @doc
-%%%
-%%% @end
-%%% Created : 23. May 2018 4:28 PM
-%%%-------------------------------------------------------------------
--module(request_context).
--author("dlive").
-
-%%-define(PER_LOG,true).
--define(PER_LOG,false).
-
-%% API
--export([init/0,init/1,update/2,update/3,to_log/1,test/0,trace/1,trace_end/1]).
-
-init()->
-    case ?PER_LOG of
-        true->
-            #{<<"t_b">> => time_util:timestamp_ms()};
-        _->
-            #{}
-    end.
-init(ID)->
-    case ?PER_LOG of
-        true->
-            #{<<"id">> =>ID,<<"t_b">> => time_util:timestamp_ms()};
-        _->
-            #{<<"id">> =>ID}
-    end.
-
-update(Key,Map)->
-    case ?PER_LOG of
-        true->
-            Map#{Key=>time_util:timestamp_ms()};
-        _->
-            Map
-    end.
-
-update(Key,Value,Map)->
-    Map#{Key=>Value}.
-
-to_log(Map)->
-    case ?PER_LOG of
-        true->
-            to_log2(Map);
-        _->
-            ok
-    end.
-
-to_log2(Map)->
-
-    #{
-        <<"t_b">> := Begin,
-        <<"t_lb">> := LoadBalance,
-        <<"t_send_agent">> := SendAgent,
-        <<"t_agent_b">> := AgentBegin,
-        <<"t_agent_e">> := AgentEnd,
-        <<"t_net_b">> := NetBegin,
-%%        <<"t_net_bd">> := NetBeginDecode,
-        <<"t_net_e">> := NetEnd,
-        <<"t_backer_b">> := BackerBegin,
-        <<"t_backer_e1">> := BackerGet,
-        <<"t_backer_e">> := BackerEnd,
-        <<"t_gate_back">> := GateWayBack,
-%%      <<"t_e">> := End,
-        <<"t_nd">> :=Node
-    } = Map,
-    Total=GateWayBack-Begin,
-    if
-        Total > 90 ->
-            performance:warning("total ~-5.10B lb ~-5.10B to_send ~-5.10B agent_b ~-5.10B agent_e ~-5.10B net_b ~-5.10B net_e ~-5.10B backer_b ~-5.10B backer_e1 ~-5.10B backer_e ~-5.10B gw_b ~-5.10B ~p",
-                [
-                    Total,
-                    LoadBalance - Begin,
-                    SendAgent-Begin,
-                    AgentBegin-SendAgent,
-                    AgentEnd-AgentBegin,
-                    NetBegin-AgentEnd,
-                    NetEnd-NetBegin,
-                    BackerBegin-NetEnd,
-                    BackerGet-BackerBegin,
-                    BackerEnd-BackerBegin,
-                    GateWayBack-BackerEnd,
-%%                    End-GateWayBack,
-                    Node
-                ]);
-        true->
-            performance:info("total ~-5.10B lb ~-5.10B to_send ~-5.10B agent_b ~-5.10B agent_e ~-5.10B net_b ~-5.10B net_e ~-5.10B backer_b ~-5.10B backer_e1 ~-5.10B backer_e ~-5.10B gw_b ~-5.10B ~p",
-                [
-                    Total,
-                    LoadBalance - Begin,
-                    SendAgent-Begin,
-                    AgentBegin-SendAgent,
-                    AgentEnd-AgentBegin,
-                    NetBegin-AgentEnd,
-                    NetEnd-NetBegin,
-                    BackerBegin-NetEnd,
-                    BackerGet-BackerBegin,
-                    BackerEnd-BackerBegin,
-                    GateWayBack-BackerEnd,
-%%                    End-GateWayBack,
-                    Node
-                ])
-    end.
-
-trace(_Info)->
-    ok.
-
-trace_end(_Info)->
-    ok.
-
-test()->
-    logger:error("a~-10.5sb",[123]).
\ No newline at end of file
