diff --git a/documentation20/webdocs/markdowndocs/administrator-ch.md b/documentation20/webdocs/markdowndocs/administrator-ch.md
index 97f9f9e8393e30b9da6c341e3c98bb2d86c13f9f..c5ecb862e32477dbb7cc4c15360ccf626bfb096a 100644
--- a/documentation20/webdocs/markdowndocs/administrator-ch.md
+++ b/documentation20/webdocs/markdowndocs/administrator-ch.md
@@ -94,7 +94,7 @@ TDengine系统后台服务由taosd提供,可以在配置文件taos.cfg里修
- maxSQLLength:单条SQL语句允许最长限制。默认值:65380字节。
- telemetryReporting: 是否允许 TDengine 采集和上报基本使用信息,0表示不允许,1表示允许。 默认值:1。
-**注意:**对于端口,TDengine会使用从serverPort起12个连续的TCP和UDP端口号,请务必在防火墙打开。因此如果是缺省配置,需要打开从6030都6041共12个端口,而且必须TCP和UDP都打开。
+**注意:**对于端口,TDengine会使用从serverPort起13个连续的TCP和UDP端口号,请务必在防火墙打开。因此如果是缺省配置,需要打开从6030都6042共13个端口,而且必须TCP和UDP都打开。
不同应用场景的数据往往具有不同的数据特征,比如保留天数、副本数、采集频次、记录大小、采集点的数量、压缩等都可完全不同。为获得在存储上的最高效率,TDengine提供如下存储相关的系统配置参数:
diff --git a/documentation20/webdocs/markdowndocs/cluster-ch.md b/documentation20/webdocs/markdowndocs/cluster-ch.md
index 31d70e73e1258ccec1016970bc56d05f18bd1801..097433a18a900779d8bc25abdcb5afa0a30f4a3f 100644
--- a/documentation20/webdocs/markdowndocs/cluster-ch.md
+++ b/documentation20/webdocs/markdowndocs/cluster-ch.md
@@ -10,7 +10,7 @@ TDengine的集群管理极其简单,除添加和删除节点需要人工干预
**第一步**:如果搭建集群的节点中,存有之前的测试数据、装过1.X的版本,或者装过其他版本的TDengine,请先将其删除,并清空所有数据,具体步骤请参考博客[《TDengine多种安装包的安装和卸载》](https://www.taosdata.com/blog/2019/08/09/566.html )
-**第二步**:建议关闭防火墙,至少保证端口:6030 - 6041的TCP和UDP端口都是开放的。**强烈建议**先关闭防火墙,集群搭建完毕之后,再来配置端口;
+**第二步**:建议关闭防火墙,至少保证端口:6030 - 6042的TCP和UDP端口都是开放的。**强烈建议**先关闭防火墙,集群搭建完毕之后,再来配置端口;
**第三步**:在所有节点安装TDengine,且版本必须是一致的,**但不要启动taosd**;
@@ -33,7 +33,7 @@ fqdn h1.taosdata.com
serverPort 6030
// 副本数为偶数的时候,需要配置,请参考《Arbitrator的使用》的部分
-arbitrator ha.taosdata.com:6030
+arbitrator ha.taosdata.com:6042
```
一定要修改的参数是firstEp, 其他参数可不做任何修改,除非你很清楚为什么要修改。
@@ -169,5 +169,5 @@ SHOW MNODES;
如果副本数为偶数,当一个vnode group里一半或超过一半的vnode不工作时,是无法从中选出master的。同理,一半或超过一半的mnode不工作时,是无法选出mnode的master的,因为存在“split brain”问题。为解决这个问题,TDengine引入了arbitrator的概念。Arbitrator模拟一个vnode或mnode在工作,但只简单的负责网络连接,不处理任何数据插入或访问。只要包含arbitrator在内,超过半数的vnode或mnode工作,那么该vnode group或mnode组就可以正常的提供数据插入或查询服务。比如对于副本数为2的情形,如果一个节点A离线,但另外一个节点B正常,而且能连接到arbitrator, 那么节点B就能正常工作。
-TDengine安装包里带有一个执行程序tarbitrator, 找任何一台Linux服务器运行它即可。该程序对系统资源几乎没有要求,只需要保证有网络连接即可。该应用的命令行参数`-p`可以指定其对外服务的端口号,缺省是6030。配置每个taosd实例时,可以在配置文件taos.cfg里将参数arbitrator设置为arbitrator的End Point。如果该参数配置了,当副本数为偶数数,系统将自动连接配置的arbitrator。
+TDengine安装包里带有一个执行程序tarbitrator, 找任何一台Linux服务器运行它即可。该程序对系统资源几乎没有要求,只需要保证有网络连接即可。该应用的命令行参数`-p`可以指定其对外服务的端口号,缺省是6042。配置每个taosd实例时,可以在配置文件taos.cfg里将参数arbitrator设置为arbitrator的End Point。如果该参数配置了,当副本数为偶数数,系统将自动连接配置的arbitrator。
diff --git a/documentation20/webdocs/markdowndocs/faq-ch.md b/documentation20/webdocs/markdowndocs/faq-ch.md
index ba2d91c4acd91286024878a045ebdb6b2ab17c56..b760fe161af4ccd3605f85362206ff9922a4f4e8 100644
--- a/documentation20/webdocs/markdowndocs/faq-ch.md
+++ b/documentation20/webdocs/markdowndocs/faq-ch.md
@@ -36,25 +36,34 @@
检查客户端侧TCP端口链接是否工作:`nc {hostIP} {port}`
-## 6. 虽然语法正确,为什么我还是得到 "Invalid SQL" 错误
+## 6. 遇到错误“Unexpected generic error in RPC”, 我怎么办?
+产生这个错误,是由于客户端或数据节点无法解析FQDN(Fully Qualified Domain Name)导致。对于TAOS Shell或客户端应用,请做如下检查:
+
+1. 请检查连接的服务器的FQDN是否正确
+2. 如果网络配置有DNS server, 请检查是否正常工作
+3. 如果网络没有配置DNS server, 请检查客户端所在机器的hosts文件,查看该FQDN是否配置,并是否有正确的IP地址。
+4. 如果网络配置OK,从客户端所在机器,你需要能Ping该连接的FQDN,否则客户端是无法链接服务器的
+
+
+## 7. 虽然语法正确,为什么我还是得到 "Invalid SQL" 错误
如果你确认语法正确,2.0之前版本,请检查SQL语句长度是否超过64K。如果超过,也会返回这个错误。
-## 7. 是否支持validation queries?
+## 8. 是否支持validation queries?
TDengine还没有一组专用的validation queries。然而建议你使用系统监测的数据库”log"来做。
-## 8. 我可以删除或更新一条记录吗?
+## 9. 我可以删除或更新一条记录吗?
不能。因为TDengine是为联网设备采集的数据设计的,不容许修改。但TDengine提供数据保留策略,只要数据记录超过保留时长,就会被自动删除。
-## 10. 我怎么创建超过250列的表?
+## 10. 我怎么创建超过1024列的表?
使用2.0及其以上版本,默认支持1024列;2.0之前的版本,TDengine最大允许创建250列的表。但是如果确实超过限值,建议按照数据特性,逻辑地将这个宽表分解成几个小表。
## 10. 最有效的写入数据的方法是什么?
-批量插入。每条写入语句可以一张表同时插入多条记录,也可以同时插入多张表的记录。
+批量插入。每条写入语句可以一张表同时插入多条记录,也可以同时插入多张表的多条记录。
## 11. 最有效的写入数据的方法是什么?windows系统下插入的nchar类数据中的汉字被解析成了乱码如何解决?
@@ -68,5 +77,20 @@ Connection = DriverManager.getConnection(url, properties);
## 12.TDengine GO windows驱动的如何编译?
请看为此问题撰写的技术博客
+## 13.JDBC报错: the excuted SQL is not a DML or a DDL?
+请更新至最新的JDBC驱动
+```JAVA
+
+ com.taosdata.jdbc
+ taos-jdbcdriver
+ 2.0.4
+
+```
+## 14. 怎么报告问题?
+如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
+1. /var/log/taos
+2. /etc/taos
+附上必要的问题描述,以及发生该问题的执行操作,出现问题的表征及大概的时间,在 GitHub提交Issue。
+为了保证有足够的debug信息,如果问题能够重复,请修改/etc/taos/taos.cfg文件,最后面添加一行“debugFlag 135"(不带引号本身),然后重启taosd, 重复问题,然后再递交。但系统正常运行时,请一定将debugFlag设置为131,否则会产生大量的日志信息,降低系统效率。
diff --git a/tests/perftest-scripts/tdengineTestWriteLoop.sh b/tests/perftest-scripts/tdengineTestWriteLoop.sh
index e1ee4418dccccb91ab7ace4696efb6864c3c0ffb..cb9d87d0c19fc171ee87c35b96ad47cd8dbf3cf7 100755
--- a/tests/perftest-scripts/tdengineTestWriteLoop.sh
+++ b/tests/perftest-scripts/tdengineTestWriteLoop.sh
@@ -24,22 +24,46 @@ function runTest {
for r in ${!rowsPerRequest[@]}; do
for c in `seq 1 $clients`; do
totalRPR=0
- OUTPUT_FILE=tdengineTestWrite-RPR${rowsPerRequest[$r]}-clients$c.out
+ if $v16 ; then
+ OUTPUT_FILE=tdengineTestWrite-v16-RPR${rowsPerRequest[$r]}-clients$c.out
+ else
+ OUTPUT_FILE=tdengineTestWrite-v20-RPR${rowsPerRequest[$r]}-clients$c.out
+ fi
for i in `seq 1 $NUM_LOOP`; do
- restartTaosd
- $TAOSD_DIR/taos -s "drop database db" > /dev/null 2>&1
- printTo "loop i:$i, $TDTEST_DIR/tdengineTest \
+ if ! $printresultonly ; then
+ restartTaosd
+ $TAOSD_DIR/taos -s "drop database db" > /dev/null 2>&1
+
+ if $v16 ; then
+ printTo "loop i:$i, $TDTEST_DIR/tdengineTest \
-dataDir $DATA_DIR \
-numOfFiles $NUM_OF_FILES \
- -w -clients $c \
- -rowsPerRequest ${rowsPerRequest[$r]}"
- $TDTEST_DIR/tdengineTest \
- -dataDir $DATA_DIR \
- -numOfFiles $NUM_OF_FILES \
- -w -clients $c \
- -rowsPerRequest ${rowsPerRequest[$r]} \
- | tee $OUTPUT_FILE
+ -writeClients $c \
+ -rowsPerRequest ${rowsPerRequest[$r]} \
+ | tee $OUTPUT_FILE"
+ $TDTEST_DIR/tdengineTest \
+ -dataDir $DATA_DIR \
+ -numOfFiles $NUM_OF_FILES \
+ -writeClients $c \
+ -rowsPerRequest ${rowsPerRequest[$r]} \
+ | tee $OUTPUT_FILE
+ else
+ printTo "loop i:$i, $TDTEST_DIR/tdengineTest \
+ -dataDir $DATA_DIR \
+ -numOfFiles $NUM_OF_FILES \
+ -w -clients $c \
+ -rowsPerRequest ${rowsPerRequest[$r]} \
+ | tee $OUTPUT_FILE"
+ $TDTEST_DIR/tdengineTest \
+ -dataDir $DATA_DIR \
+ -numOfFiles $NUM_OF_FILES \
+ -w -clients $c \
+ -rowsPerRequest ${rowsPerRequest[$r]} \
+ | tee $OUTPUT_FILE
+ fi
+ fi
+
RPR=`cat $OUTPUT_FILE | grep speed | awk '{print $(NF-1)}'`
totalRPR=`echo "scale=4; $totalRPR + $RPR" | bc`
printTo "rows:${rowsPerRequest[$r]}, clients:$c, i:$i RPR:$RPR"
@@ -86,25 +110,30 @@ function restartTaosd {
################ Main ################
-master=false
-develop=true
+v16=false
+v20=true
verbose=false
clients=1
+printresultonly=false
while : ; do
case $1 in
+ printresultonly)
+ printresultonly=true
+ shift ;;
+
-v)
verbose=true
shift ;;
- master)
- master=true
- develop=false
+ v16)
+ v16=true
+ v20=false
shift ;;
- develop)
- master=false
- develop=true
+ v20)
+ v16=false
+ v20=true
shift ;;
-c)
@@ -120,19 +149,24 @@ while : ; do
esac
done
-if $master ; then
- echo "Test master branch.."
- cp /mnt/root/cfg/master/taos.cfg /etc/taos/taos.cfg
- WORK_DIR=/mnt/root/TDengine.master
+if $v16 ; then
+ echo "Test v16 branch.."
+ WORK_DIR=/mnt/root/TDengine.v16
+ cp /mnt/root/cfg/v16/taos.cfg /etc/taos/taos.cfg
else
- echo "Test develop branch.."
- cp /mnt/root/cfg/develop/taos.cfg /etc/taos/taos.cfg
+ echo "Test v20 branch.."
+ cp /mnt/root/cfg/v20/taos.cfg /etc/taos/taos.cfg
WORK_DIR=/mnt/root/TDengine
fi
TAOSD_DIR=$WORK_DIR/debug/build/bin
TDTEST_DIR=$WORK_DIR/tests/comparisonTest/tdengine
+if [ ! -f $TDTEST_DIR/tdengineTest ]; then
+ echo "Please build tdengineTest first!"
+ exit 1
+fi
+
runTest
echo "Test done!"