TDengine社区问题双周精选第一期

北京中科医院怎么样 http://pf.39.net/bdfyy/zjft/161225/5154127.html

Hi,TDengine的用户朋友们,为防止过多的共性问题困扰大家,方便大家学习、吸收经验,从今天开始我们会对近期社区内用户遇到的共性问题进行精选、汇总,每两周给大家带来一次分享。这是此类专栏的第一期内容,为大家分享如下七个常见问题:

客户端连接串如何保证高可用?

Java应用使用taos-jdbcdriver连接TDengine时,RESTful与原生(JNI)接口性能相比如何,该如何选型?

TDengine如何做表关联?是使用JOIN吗?

为什么RESTful接口无响应、Grafana无法添加TDengine为数据源、TDengineGUI选了端口还是无法连接成功?

TDengine数据备份工具taosdump如何使用?

Windows客户端无法正常显示中文字符?

发生了OOM怎么办?

1.客户端连接串如何保证高可用?

本周有较多的用户提到了这个问题,类似的还有「如何给多节点TDengine集群的链接配置高可用」。这个问题时常出现在社区中,DBA、运维同学较为关心。我们已经整理成了文章,详情可看博客:「TDengine如何做到客户端高可用」

2.Java应用使用taos-jdbcdriver连接TDengine时,RESTful与原生(jni)接口性能相比如何,该如何选型?

使用RESTful连接时,不依赖TDengine客户端驱动,可以跨平台,RESTful连接支持所有能运行Java的平台。原生连接支持的平台则和TDengine客户端驱动支持的平台一致。因此RESTful相比于原生连接使用起来更加灵活、方便,但采用RESTful的方式连接,其性能相较于原生连接会低30%左右。

推荐在每秒写入量小于万条记录的场景下,优先选择RESTful。用户也可根据自己场景做性能测试,若使用RESTful连接时性能完全能满足业务操作需求则优先选择RESTful,反之选择原生连接。

3.TDengine如何做表关联?是使用JOIN吗?

TDengine支持在「普通表与普通表」、「超级表与超级表」、「子查询与子查询」之间进行自然连接,其语法相较于INNERJOIN有所不同,并且各种表进行关联查询的限制也不尽相同。

详细内容请看文档:「JOIN子句」

4.为什么RESTful接口无响应、Grafana无法添加TDengine为数据源、TDengineGUI选了端口还是无法连接成功?

上述问题也间歇性的出现在社区中,许多用户充满了疑问,特别是一些从TDengine旧版本升到2.4及之后版本的用户们,这是因为在2.4之前的版本中没有单独的taosAdapter组件,RESTful接口是由taosd内置的HTTP服务提供的,而如今要实现上述功能需要执行:systemctlstarttaosadapter命令来启动taosAdapter服务。

需要说明的是,taosAdapter的日志路径path需要单独配置,默认路径是/var/log/taos;日志等级logLevel有8个等级,默认等级是info,配置成panic可关闭日志输出。请注意操作系统/目录的空间大小,可通过命令行参数、环境变量或配置文件来修改配置,默认配置文件是/etc/taos/taosadapter.toml。

有关taosAdapter组件的详细介绍请看文档:「taosAdapter」

5.TDengine数据备份工具taosdump如何使用?

taosdump是TDengine集群的数据备份、还原工具,使用前请先查看文档中的说明及注意事项:「taosdump」

需要注意的是,taosdump采用逻辑备份的方式进行备份,其不应被用于备份任何原始数据、环境设置、硬件信息、服务端配置或集群的拓扑结构;并且当备份的表数量很多时很容易导致文件系统卡住(一个表一个备份文件),推荐书写脚本循环调用taosdump按照较细的粒度备份到不同目录。

6.Windows客户端无法正常显示中文字符?

Windows系统中一般是采用GBK/GB存储中文字符,而TDengine的默认字符集为UTF-8,在Windows系统中使用TDengine客户端时,客户端驱动会将字符统一转换为UTF-8编码后发送到服务端存储,因此在应用开发过程中,调用接口时正确配置当前的中文字符集即可。

在Windows10环境下运行TDengine客户端命令行工具taos时,若无法正常输入、显示中文,可以对客户端taos.cfg做如下配置:

localeC

charsetUTF-8

再次运行客户端命令行工具taos,即能正常进行操作。

另外,在TDengine中,中文字符或其他多字节字符需用nchar类型存储,不要用binary类型进行存储,否则在用taosdump工具导出导入时将出现乱码,导致不可修复的异常,binary建议只用于存储ASCII可见字符。

7.发生了OOM怎么办?

OOM是操作系统的保护机制,当操作系统内存(包括SWAP)不足时,会杀掉某些进程,从而保证操作系统的稳定运行。通常内存不足主要是如下两个原因导致,一是剩余内存小于vm.min_free_kbytes;二是程序请求的内存大于剩余内存。还有一种情况是内存充足但程序占用了特殊的内存地址,也会触发OOM。

TDengine会预先为每个VNode分配好内存,每个Database的VNode个数受maxVgroupsPerDb影响,每个VNode占用的内存大小受Blocks和Cache影响。要防止OOM,需要在项目建设之初合理规划内存,并合理设置SWAP,除此之外查询过量的数据也有可能导致内存暴涨,这取决于具体的查询语句。TDengine企业版对内存管理做了优化,采用了新的内存分配器,对稳定性有更高要求的用户可以考虑选择企业版。

结尾语

感谢您阅读本期问题精选,希望以上内容对您有帮助。您在使用TDengine的过程中,若遇到棘手的问题或对TDengine有改进意见,欢迎在GitHub上给我们提Issue,内容越详细越好,也可


转载请注明:http://www.aierlanlan.com/cyrz/5620.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了