C语言中thrift 中THttpHandler 传输数据 慢 slow 解决办法

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

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

2.解决办法:

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

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();

      }

时间: 2024-08-29 11:10:30

C语言中thrift 中THttpHandler 传输数据 慢 slow 解决办法的相关文章

C#中thrift 中THttpHandler 传输数据 慢 slow 解决办法

1. 在用c# 写thrift的服务端,来相应http请求,在用结构体传输时,会遇到一个问题,就是(在用网络)传输数据特别慢, 这是由于在发生数据是用的TStreamTransport 导致每传一个数据,就建立一次连接. 2.解决办法: 可以降THttpHandler中的重写为以下的. public void ProcessRequest(Stream input, Stream output) { //TTransport transport = new TStreamTransport(in

linux中无 conio.h的解决办法

conio.h不是C标准库中的头文件,在ISO和POSIX标准中均没有定义.conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等.大部分DOS,Windows,Phar Lap,DOSX,OS/2等平台上的C编译器提供此文件,UNIX和Linux平台的C编译器本身通常不包含此头文件,但已经有其兼容包,可参考: http://conio.sourceforg

GDI+中发生一般性错误的解决办法(转载)

今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误"的异常.于是开始"摆渡",并寻找到了解决办法:赋予 NETWORK SERVICE 帐户以写权限. 以下为晚上寻找到的资料: 在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致"GDI+ 中发生一般性错误"的发生,通常有以下三种

MySQL集群架构以及本人配置过程中出现的问题及解决办法

首先说下MySQL的优缺点 优点 解决单点故障 自动实现数据冗余 缺点就是维护起来太麻烦. 集群的条件就是所有的机器上都要安装MySQL的集群软件,我安装的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm的rpm包,不是源码包安装.如果系统里面安装了mysql-server等数据库服务软件的要自行写在掉即可. MySQL集群中有三种角色,下面是三种角色以及其的作用 角色 数据节点:ndbd节点 存储在表里的数据(表中的记录) SQL节点:不存储数据,供用户访问和

新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法

新建空白解决方案的步骤:文件--新建项目--其他项目类型--Visual Studio 解决方案 这样就建立出了一个空白解决方案. 然后在资源管理器中可以添加项目,但是添加项目的时候会发现,解决方案消失了,解决办法  工具--选项--项目和解决方案(如果看不到这个,在下方有一个显示所有设置打勾),然后右边有一个 总是显示解决方案.勾上,解决方案就出现了 记录一下. 新建解决方案 在解决方案中添加项目中,解决方案消失的解决办法,布布扣,bubuko.com

基于H.264协议的视频传输系统中遇到的问题以及解决办法

问题1.视频压缩解码模块在运用的时候出现错误:解码器再解码第二帧视频图片的时候出现异常 client: ../../decoder/T264dec.c:594:T264dec_decode_nal: Assertion `0' failed. Aborted 对于该问题的分析及解决过程为: 1.  修改数据类型,所有缓存区改为unsigned char类型(原来统一为char 类型),但是还是遇到一样的异常错误,问题没有解决. 2.  查看缓存区具体内容是否与服务器端压缩的数据是一致的的,对照数

MyEclipse迁移过程中Tomcat版本不一致的解决办法

MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下problems那栏的错误: 看见这个迁移过程中Tomcat版本不一致的错误,知道了就比较简单,不知道的时候就比较难了,解决办法如下: 1.查找到MyEclipse里面的菜单栏里面的MyEclipse 2.点击MyEclipse里面的Migrate Projects选项后,就出现如下图: 3.点击上图里

关于Excel文件导入到Sqlserver2008中出现截断错误的解决办法

出现错误的可能原因: 1.数据库字段Varchar长度不够: 2.不能用Text类型: 3.数据中可能存在换行符: 4.数据项文本过长,超过4000: 5.前8行的最大长度不够大,后面有超过的. 解决办法: 1.修改Varchar长度为足够长: 2.替换掉换行符(可手工输入一个换行符,复制到替换文本框中,Office中可按住Alt键,从小键盘输入10,再松开Alt键): 3.第一行中记录设足够长,导入后再替换: 4.把Excel文件存为2007格式,可解决导入后很多数据项为NULL的问题: 5.

C#中WebClient中文乱码的解决办法

原文:C#中WebClient中文乱码的解决办法 第一次尝试: string question = textBox1.Text.ToString(); WebClient youdao = new WebClient(); youdao.Encoding = System.Text.Encoding.GetEncoding("GB2312"); Uri uri = new Uri("http://xxxxxxxxxxxxxx"); textBox1.Text =yo