cassandra在服务端像leveldb一样进行插入初试成功
经过研究,决定在 cql3/QueryProcessor.java 里面下手。
这里有两个函数,第一个是
public ResultMessage process(String queryString, QueryState queryState, QueryOptions options, long queryStartNanoTime)
该函数接受到 String 类型的sql语句,进行规整处理(判断是否合法),然后 调用 函数
processStatement(prepared, queryState, options, queryStartNanoTime);
进行具体的处理。
我们在同一个类里面建立bench函数
public void Bench(String queryString, QueryState queryState, QueryOptions options, long queryStartNanoTime)
在 process 函数开始时调用bench函数。
但是注意:如果不加处理,cassandra启动后会陷入某种无限循环导致一直无法进入服务状态(客户端无法操作数据库)
因此,在调用 bench 之前,加入if语句,判断如果 queryString 中含有某字符(bench)再调用bench函数。
注意需要将判断语句放在开始,这样可以使用任意的 query语句触发bench函数。否则如果放在后面,如果query语句非法,规整处理会直接返回。
bench函数被调用后,可以更改传递过来的 sql语句,然后调用
processStatement
完成处理。
测试:在bench函数中使用insert语句,结果插入成功。
------------------------------问题
只能插入一条,如果插入多条的话,会发生错误。
WriteTimeout: Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}
goolge该错误,找到该链接,一模一样的错误 http://stackoverflow.com/questions/30575125/coordinator-node-timed-out-waiting-for-replica-nodes-in-cassandra-datastax-while
将配置文件 cassandra.yaml 中的 write_request_timeout_in_ms =2000 改为
write_request_timeout_in_ms: 20000重启,多条插入成功 ---------------------------------问题2
但是这并不能完成负载,一般插入几十k条记录就结束了。
后来发现 write_request_timeout_in_ms 的设置同时是服务端的运行时间,将这个值在加几个0,就可以bench很长时间了。 -------------------------问题3
当解决了上面问题后,去除打印语句,可以发现log的速度很快,iostat在7到十几MB/s
但是,合并后又出了问题。
决定放弃这一方案,准备在多核机器上使用YCSB客户端测试。
WARN [MutationStage-7] 2017-02-23 05:44:40,240 AbstractLocalAwareExecutorService.java:167 - Uncaught exception on thread Thread[MutationStage-7,10,main]: {}
java.lang.AssertionError: null
at io.netty.util.Recycler$WeakOrderQueue.<init>(Recycler.java:225) ~[netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.util.Recycler$DefaultHandle.recycle(Recycler.java:180) ~[netty-all-4.0.39.Final.jar:4.0.39.Final]
at io.netty.util.Recycler.recycle(Recycler.java:141) ~[netty-all-4.0.39.Final.jar:4.0.39.Final]
at org.apache.cassandra.utils.btree.BTree$Builder.recycle(BTree.java:839) ~[main/:na]
at org.apache.cassandra.utils.btree.BTree$Builder.build(BTree.java:1092) ~[main/:na]
at org.apache.cassandra.db.partitions.PartitionUpdate.build(PartitionUpdate.java:584) ~[main/:na]
at org.apache.cassandra.db.partitions.PartitionUpdate.maybeBuild(PartitionUpdate.java:574) ~[main/:na]
at org.apache.cassandra.db.partitions.PartitionUpdate.holder(PartitionUpdate.java:385) ~[main/:na]
at org.apache.cassandra.db.partitions.AbstractBTreePartition.unfilteredIterator(AbstractBTreePartition.java:177) ~[main/:na]
at org.apache.cassandra.db.partitions.AbstractBTreePartition.unfilteredIterator(AbstractBTreePartition.java:172) ~[main/:na]
at org.apache.cassandra.db.partitions.PartitionUpdate$PartitionUpdateSerializer.serialize(PartitionUpdate.java:776) ~[main/:na]
at org.apache.cassandra.db.Mutation$MutationSerializer.serialize(Mutation.java:377) ~[main/:na]
at org.apache.cassandra.db.commitlog.CommitLog.add(CommitLog.java:249) ~[main/:na]
at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:581) ~[main/:na]
at org.apache.cassandra.db.Keyspace.applyNotDeferrable(Keyspace.java:440) ~[main/:na]
at org.apache.cassandra.db.Mutation.apply(Mutation.java:223) ~[main/:na]
at org.apache.cassandra.db.Mutation.apply(Mutation.java:237) ~[main/:na]
at org.apache.cassandra.service.StorageProxy$8.runMayThrow(StorageProxy.java:1374) ~[main/:na]
at org.apache.cassandra.service.StorageProxy$LocalMutationRunnable.run(StorageProxy.java:2596) ~[main/:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_111]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:162) ~[main/:na]
at org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:134) [main/:na]
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:109) [main/:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
cassandra在服务端像leveldb一样进行插入初试成功的更多相关文章
- 创建APPID&&部署服务端教程
创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之四:流程优化之信息安全与订单校验
有了前文几个步骤的分析和设计,TYPESDK的信息交互流程已经可以正常工作了,但是,这个流程还没有考虑到支付这样的过程中,至关重要的信息安全问题. 在整个交互过程中,游戏服务端,SDK服务端,渠道服务 ...
- Mina airQQ聊天 服务端篇(二)
Mina聊天服务端实现思路:在用户登录的时候.连接服务端而且验证登录用户,假设成功,则将IoSession保存到map<账号,IoSession>中,而且通知该用户的好友上线,然 后再请求 ...
- DSAPI HTTP监听服务端与客户端
本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...
- DSAPI多功能组件编程应用-HTTP监听服务端与客户端
本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- Cognos TM1_10.1.1服务端配置
场景:本文继Cognos TM1_10.1.1服务端安装 之后,简单的说一下本人对简单配置的拙见,确保服务端在安装过程一切正常,成功安装. 1:进入TM的Cognos Configuration 2: ...
- 安装lanproxy服务端、客户端以及小问题解决
准备 我们这里使用java客户端与服务端连接 1.一台公网服务器(运行proxy-server).2.一台内网客户端(运行proxy-client). 下载地址:https://seafile.cdj ...
- java socket实现服务端,客户端简单网络通信。Chat
之前写的实现简单网络通信的代码,有一些严重bug.后面详细写. 根据上次的代码,主要增加了用户注册,登录页面,以及实现了实时显示当前在登录状态的人数.并解决一些上次未发现的bug.(主要功能代码参见之 ...
随机推荐
- iOS推送的开启与关闭
开启: [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationType ...
- T3187 队列练习3 codevs
http://codevs.cn/problem/3187/ 题目描述 Description 比起第一题,本题加了另外一个操作,访问队头元素(编号3,保证访问队头元素时或出队时队不为空),现在给出这 ...
- Apache Beam 传 大数据杂谈
1月10日,Apache软件基金会宣布,Apache Beam成功孵化,成为该基金会的一个新的顶级项目,基于Apache V2许可证开源. 2003年,谷歌发布了著名的大数据三篇论文,史称三驾马车:G ...
- chromium爱好者不可错过的一个开源分支
这次我要推荐下http://bloomberg.github.com/chromium.bb, 名字就叫chromium.bb,特点是专门的windows ports,关键是极大的简化了原版chrom ...
- 【Linux学习笔记】栈与函数调用惯例
栈与函数调用惯例(又称调用约定)— 基础篇 记得一年半前参加百度的校招面试时,被问到函数调用惯例的问题.当时只是懂个大概,比如常见函数调用约定类型及对应的参数入栈顺序等.最近看书过程中,重新回顾了这些 ...
- c++中c_str()函数
https://zhidao.baidu.com/question/104592558.html
- C#如何实现挂机锁
首先在主窗体中设置一个子窗体的实例,然后当点击挂机之后,隐藏当前窗体,同时显示子窗体. 把子窗体的背景窗体设置如下属性(主要是背景随便改成一个图片,然后FormBorderStyle改成None, ...
- android 文件读取(assets)
assets文件夹资源的访问 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. 1. 先在Activity里面调用g ...
- Go与C语言的互操作 cgo
http://tonybai.com/2012/09/26/interoperability-between-go-and-c/ // foo.h int count; void foo(); //f ...
- ime-mode:disabled (用css实现关闭文本框输入法)
css 之 ime-mode语法:ime-mode : auto | active | inactive | disabled取值:auto : 默认值.不影响ime的状态.与不指定 ime-mode ...