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.(主要功能代码参见之 ...
随机推荐
- 标准C程序设计七---05
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- HDU 5676 ztr loves lucky numbers【DFS】
题目链接; http://acm.hdu.edu.cn/showproblem.php?pid=5676 题意: 由4和7组成的且4和7出现次数相同的数称为幸运数字,给定n,求不大于n的最大幸运数字. ...
- Django实现的博客系统中使用富文本编辑器ckeditor
操作系统为OS X 10.9.2,Django为1.6.5. 1.下载和安装 1.1 安装 ckeditor 下载地址 https://github.com/shaunsephton/django-c ...
- codeforces #463
D(树上倍增) 题意: 刚开始有一个点1,权值为0. 接下来有q个操作,每个操作有两种: 1 R W:新加一个点,这个点的权值为W,这个点的父亲是R 2 R X:在从点R到1的路径上,取出从R开始的不 ...
- 蓝桥java 入门训练 Fibonacci数列
import java.util.Scanner; public class Main{ public static void main(String[] args) { int maxn=10000 ...
- 【Java TCP/IP Socket】UDP Socket(含代码)
UDP的Java支持 UDP协议提供的服务不同于TCP协议的端到端服务,它是面向非连接的,属不可靠协议,UDP套接字在使用前不需要进行连接.实际上,UDP协议只实现了两个功能: 1)在IP协议的基础上 ...
- oracle存储过程中使用字符串拼接
1.使用拼接符号“||” v_sql := 'SELECT * FROM UserInfo WHERE ISDELETED = 0 AND ACCOUNT =''' || vAccount || '' ...
- 切换横屏幕 onCreate 多次执行问题
在AndroidManifest.xml 中activity 中添加 android:configChanges="orientation|screenSize|smallestScreen ...
- SolidEdge 如何绘制局部视图 局部放大图
创建局部视图(局部放大图),先选择要创建局部放大图的视图,然后绘制一个小圆,然后绘制一个大圆即可. 如果要绘制不规则形状的局部放大图,则点击了局部放大图之后,点击绘制草图的按钮 随后可以用相切 ...
- python—networkx:依据图的权重绘图
首先输入边和边的权重,随后画出节点位置.依据权重大小划分实边和虚边 #coding:utf-8 #!/usr/bin/env python """ An example ...