zoukankan      html  css  js  c++  java
  • C#中thrift 中THttpHandler 传输数据 慢 slow 解决办法

    1. 在用c# 写thrift的服务端,来相应http请求,在用结构体传输时,会遇到一个问题,就是(在用网络)传输数据特别慢,

    这是由于在发生数据是用的TStreamTransport 导致每传一个数据,就建立一次连接。

    2.解决办法:

     可以降THttpHandler中的重写为以下的。

      public void ProcessRequest(Stream input, Stream output)
            {
                //TTransport transport = new TStreamTransport(input,output);
                TTransport inTransport = new TStreamTransport(input, output);
                //在out加入缓存机制
                TBufferedTransport outTransport = new TBufferedTransport((TStreamTransport)inTransport);
                //TTransport transport = new TStreamTransport(input, output);
    
                TProtocol inputProtocol = null;
                TProtocol outputProtocol = null;
    
                try
                {
                    inputProtocol = inputProtocolFactory.GetProtocol(inTransport);
                    outputProtocol = outputProtocolFactory.GetProtocol(outTransport);
    
                    while (processor.Process(inputProtocol, outputProtocol)) { }
                }
                catch (TTransportException)
                {
                    // Client died, just move on
                }
                catch (TApplicationException tx)
                {
                    Console.Error.Write(tx);
                }
                catch (Exception x)
                {
                    Console.Error.Write(x);
                }
    
                inTransport.Close();
                outTransport.Close();
            }
    

      

  • 相关阅读:
    Struts2完全解耦和
    storm 错误汇总
    sublime3 在ubuntu下不能输入中文
    sublime3 10款必备插件
    sublime3 SublimeREPL python3
    sublime3 Package Control不能使用
    Buffer ByteBuffer 缓冲区
    redis cluster批量插入
    延期执行的方案计策略汇总
    linux 免密登录
  • 原文地址:https://www.cnblogs.com/qiange/p/3992192.html
Copyright © 2011-2022 走看看