Thrift-0.9.3 服务器端参数优化
2015-10-15 00:00
281 查看
http://www.open-open.com/doc/view/cd7da54b013c43d4b848c872e039f418 --- 一篇很详细的介绍文档
在服务器端,如果仅仅用之前的代码,那么肯定是不行的,参数优化是必须的。
参数优化包含以下几个部分:
Accept线程: 线程个数
Select Worker线程: 线程个数 每个线程的acceptedQueue有界还是无界
ExecutorService invoker的线程个数
===============================具体代码如下:
Accept线程: 线程个数,默认就是1个。
tArgs.selectorThreads(Runtime.getRuntime().availableProcessors()*1); //这里应该写为,目的是为了修改Select Worker线程数。
tArgs.acceptQueueSizePerThread(10000); //设置每个线程的acceptedQueue.其实就是单线程待处理的IO连接数的最大等待个数。
tArgs.workerThreads(Runtime.getRuntime().availableProcessors()*10);
===
关于注册钩子
serverTransport = new TServerSocket(port);
TProtocolFactory proFactory = new TBinaryProtocol.Factory();
TProcessor processor = new GraphService.Processor(new GraphServiceImpl());
Args arg=new Args(serverTransport){}.protocolFactory(proFactory).processor(processor);
server = new TThreadPoolServer(arg);
log.info("Start server on port "+port+"...");
registerShutdownHook(server);
server.serve();
其中registerShutdownHook是用来在jvm进程结束之前关闭server的,Ctrl-C和kill -15关闭程序会执行,kill -9不会执行
在服务器端,如果仅仅用之前的代码,那么肯定是不行的,参数优化是必须的。
参数优化包含以下几个部分:
Accept线程: 线程个数
Select Worker线程: 线程个数 每个线程的acceptedQueue有界还是无界
ExecutorService invoker的线程个数
===============================具体代码如下:
Accept线程: 线程个数,默认就是1个。
tArgs.selectorThreads(Runtime.getRuntime().availableProcessors()*1); //这里应该写为,目的是为了修改Select Worker线程数。
tArgs.acceptQueueSizePerThread(10000); //设置每个线程的acceptedQueue.其实就是单线程待处理的IO连接数的最大等待个数。
tArgs.workerThreads(Runtime.getRuntime().availableProcessors()*10);
===
关于注册钩子
serverTransport = new TServerSocket(port);
TProtocolFactory proFactory = new TBinaryProtocol.Factory();
TProcessor processor = new GraphService.Processor(new GraphServiceImpl());
Args arg=new Args(serverTransport){}.protocolFactory(proFactory).processor(processor);
server = new TThreadPoolServer(arg);
log.info("Start server on port "+port+"...");
registerShutdownHook(server);
server.serve();
其中registerShutdownHook是用来在jvm进程结束之前关闭server的,Ctrl-C和kill -15关闭程序会执行,kill -9不会执行
相关文章推荐
- 基于HBase Thrift接口的一些使用问题及相关注意事项的详解
- sparksql与hive整合
- 用thrift实现多语言相互调用
- Thrift的required和optional源码分析
- Python 通过thrift接口连接Hbase读取存储数据
- Apache Thrift原理及windows使用
- 运行apache thrift的错误解决
- PHP调用python
- ajax应用
- Thrift学习
- Thrift 实例 Helloworld
- Thirft框架介绍
- Ubuntu安装Thrift连接Hive
- Java版的各种Thrift server实现的比较
- ubuntu12.0 安装thrift 0.9 时 configure: error: "Error: libcrypto required."
- thrift non-blocking server在多线程下的处理流程
- thrift文件里头使用异常
- Intel Hadoop Distribution 2.5.1 HBase Thrift启动异常
- 30天了解30种技术系列---(9)可伸缩的跨语言服务开发框架Thrift
- thrift连接池问题