Hi,TDengine 的用(yong)戶朋(peng)友們(men),為防止過(guo)多的共性(xing)問題困擾(rao)大(da)家(jia),方便大(da)家(jia)學習、吸收經(jing)驗(yan),從今天開始(shi)我們(men)會對(dui)近(jin)期社區內用(yong)戶遇到的共性(xing)問題進行精(jing)選(xuan)、匯(hui)總(zong),每兩周(zhou)給大(da)家(jia)帶(dai)來一次分(fen)享。 這是(shi)此類專欄的第一期內容,為大(da)家(jia)分(fen)享如下七個常見問題:
- 客戶端連接串如何保證高可用?
- Java 應用使用 taos-jdbcdriver 連接 TDengine 時, RESTful 與原生 ( JNI ) 接口性能相比如何,該如何選型?
- TDengine 如何做表關聯?是使用 JOIN 嗎?
- 為什么 RESTful 接口無響應、Grafana 無法添加 TDengine 為數據源、TDengineGUI 選了 6041 端口還是無法連接成功?
- TDengine 數據備份工具 taosdump 如何使用?
- Windows 客戶端無法正常顯示中文字符?
- 發生了 OOM 怎么辦?
1. 客戶端連接串如何保證高可用?
本周有較多的用戶提到了這個問題,類似的還有 「如何給多節點 TDengine 集群的鏈接配置高可用」。這個問題時常出現在社區中,DBA、運維同學較為關心。我們已經整理成了文章,詳情可看博客:「 TDengine 如何做到客戶端高可用 」
2. Java 應用使用 taos-jdbcdriver 連接 TDengine 時, RESTful 與原生 ( jni ) 接口性能相比如何,該如何選型?
使用 RESTful 連接(jie)時,不依(yi)賴(lai) TDengine 客戶端驅(qu)動,可(ke)以跨(kua)平(ping)臺(tai),RESTful 連接(jie)支持(chi)所有能運行 Java 的平(ping)臺(tai)。原(yuan)(yuan)生(sheng)連接(jie)支持(chi)的平(ping)臺(tai)則和 TDengine 客戶端驅(qu)動支持(chi)的平(ping)臺(tai)一致。 因(yin)此 RESTful 相比于原(yuan)(yuan)生(sheng)連接(jie)使用起來更加(jia)靈活(huo)、方(fang)便,但采(cai)用 RESTful 的方(fang)式連接(jie),其性(xing)能相較于原(yuan)(yuan)生(sheng)連接(jie)會低 30% 左右。
推薦在每秒寫入量小于 200 萬條記錄的場景下(xia),優(you)先選(xuan)擇(ze) RESTful 。用戶也可根據(ju)自己場景做(zuo)性能測試,若使用 RESTful 連(lian)接時(shi)性能完(wan)全能滿足業務操作需求則優(you)先選(xuan)擇(ze) RESTful ,反之(zhi)選(xuan)擇(ze)原生連(lian)接。
3. TDengine 如何做表關聯?是使用 JOIN 嗎?
TDengine 支持在 「普通表(biao)與普通表(biao)」、「超(chao)級表(biao)與超(chao)級表(biao)」、「子(zi)查詢與子(zi)查詢」之間進(jin)行自然連接,其語法相(xiang)(xiang)較于(yu) INNER JOIN 有(you)所不同(tong),并且各種(zhong)表(biao)進(jin)行關聯(lian)查詢的限制也不盡相(xiang)(xiang)同(tong)。
詳細內容請看文檔:
4. 為什么 RESTful 接口無響應、Grafana 無法添加 TDengine 為數據源、TDengineGUI 選了 6041 端口還是無法連接成功?
上述問題也間歇性的出現在社區中,許多用戶充滿了疑問,特別是一些從 TDengine 舊版本升到 2.4 及之后版本的用戶們,這是因為在 2.4 之前的版本中沒有單獨的 taosAdapter 組件,RESTful 接口是由 taosd 內置的 HTTP 服務提供的,而如今要實現上述功能需要執行:systemctl start taosadapter 命令來啟動 taosAdapter 服務。
需(xu)要說明(ming)的是(shi)(shi),taosAdapter 的日(ri)志(zhi)路徑 path 需(xu)要單獨配(pei)置(zhi),默認路徑是(shi)(shi) /var/log/taos ;日(ri)志(zhi)等級 logLevel 有 8 個(ge)等級,默認等級是(shi)(shi) info ,配(pei)置(zhi)成 panic 可關閉日(ri)志(zhi)輸出。請(qing)注意操作系統(tong) / 目錄的空間(jian)大小,可通過命令行參數(shu)、環境變量(liang)或配(pei)置(zhi)文件來修(xiu)改配(pei)置(zhi),默認配(pei)置(zhi)文件是(shi)(shi) /etc/taos/taosadapter.toml 。
有關 taosAdapter 組件的詳細介紹請看文檔:
5. TDengine 數據備份工具 taosdump 如何使用?
taosdump 是(shi) TDengine 集群的數據備份、還原工(gong)具,使用前請先查(cha)看(kan)文檔中的說明及(ji)注意事項 :
需(xu)要(yao)注意的(de)是,taosdump 采(cai)用(yong)邏輯備(bei)(bei)份(fen)的(de)方式進(jin)行備(bei)(bei)份(fen),其不(bu)應被用(yong)于(yu)備(bei)(bei)份(fen)任何(he)原始數(shu)據、環(huan)境設置、 硬件信息、服務端配置或集(ji)群的(de)拓撲(pu)結構;并(bing)且當備(bei)(bei)份(fen)的(de)表數(shu)量很(hen)多時很(hen)容易導致文件系(xi)統(tong)卡住(一(yi)(yi)個(ge)(ge)表一(yi)(yi)個(ge)(ge)備(bei)(bei)份(fen)文件),推(tui)薦書(shu)寫腳本循環(huan)調用(yong) taosdump 按照較細的(de)粒(li)度備(bei)(bei)份(fen)到不(bu)同目錄(lu)。
6. Windows 客戶端無法正常顯示中文字符?
Windows 系(xi)統(tong)中一般是采(cai)用(yong) GBK/GB18030 存儲中文字(zi)符(fu),而(er) TDengine 的(de)默(mo)認字(zi)符(fu)集(ji)為 UTF-8 ,在 Windows 系(xi)統(tong)中使用(yong) TDengine 客戶端時,客戶端驅動會(hui)將字(zi)符(fu)統(tong)一轉換(huan)為 UTF-8 編碼(ma)后發送到服務端存儲,因此在應用(yong)開發過程(cheng)中,調用(yong)接口(kou)時正確配置(zhi)當前的(de)中文字(zi)符(fu)集(ji)即可。
【 v2.2.1.5以(yi)(yi)后版(ban)本 】在 Windows 10 環境下(xia)運行 TDengine 客戶端命(ming)令(ling)行工具 taos 時,若(ruo)無(wu)法正(zheng)常輸入、顯示中文,可(ke)以(yi)(yi)對客戶端 taos.cfg 做如下(xia)配置(zhi):
locale C
charset UTF-8
再(zai)次運行(xing)客(ke)戶端命令行(xing)工具 taos ,即能正常進(jin)行(xing)操作(zuo)。
另外,在(zai)(zai) TDengine 中,中文(wen)字(zi)符或(huo)其他多字(zi)節(jie)字(zi)符需用(yong) nchar 類(lei)型存儲(chu),不(bu)要(yao)用(yong) binary 類(lei)型進行存儲(chu),否則在(zai)(zai)用(yong) taosdump 工具導出導入時將出現亂(luan)碼,導致(zhi)不(bu)可(ke)修(xiu)復(fu)的異(yi)常,binary 建議只(zhi)用(yong)于存儲(chu) ASCII 可(ke)見(jian)字(zi)符。
7. 發生了 OOM 怎么辦?
OOM 是(shi)操作(zuo)系(xi)(xi)統的保(bao)護機制,當(dang)操作(zuo)系(xi)(xi)統內(nei)存(包括 SWAP )不足時,會(hui)殺掉某些進程(cheng),從而保(bao)證操作(zuo)系(xi)(xi)統的穩(wen)定(ding)運行。通(tong)常內(nei)存不足主要(yao)是(shi)如下兩個原因導致(zhi),一是(shi)剩(sheng)余(yu)內(nei)存小于(yu) vm.min_free_kbytes ;二是(shi)程(cheng)序請求的內(nei)存大于(yu)剩(sheng)余(yu)內(nei)存。還(huan)有(you)一種(zhong)情況是(shi)內(nei)存充足但程(cheng)序占(zhan)用(yong)了特殊的內(nei)存地址,也會(hui)觸發 OOM 。
TDengine 會(hui)預先為每個(ge)(ge) VNode 分(fen)配好內(nei)存(cun)(cun),每個(ge)(ge) Database 的(de)(de) VNode 個(ge)(ge)數(shu)受 maxVgroupsPerDb 影響(xiang),每個(ge)(ge) VNode 占用(yong)的(de)(de)內(nei)存(cun)(cun)大小受 Blocks 和 Cache 影響(xiang)。要(yao)防止 OOM,需要(yao)在(zai)項目(mu)建設(she)之初合理(li)(li)(li)規劃內(nei)存(cun)(cun),并合理(li)(li)(li)設(she)置 SWAP ,除此之外查(cha)詢(xun)(xun)過(guo)量的(de)(de)數(shu)據也有可能導致內(nei)存(cun)(cun)暴漲,這取決于(yu)具體的(de)(de)查(cha)詢(xun)(xun)語(yu)句(ju)。TDengine 企業(ye)版對內(nei)存(cun)(cun)管理(li)(li)(li)做了優化,采用(yong)了新的(de)(de)內(nei)存(cun)(cun)分(fen)配器,對穩定性有更高要(yao)求的(de)(de)用(yong)戶可以考慮選擇企業(ye)版。
結尾語
感謝(xie)您(nin)閱讀(du)本期問題(ti)精選,希望(wang)以上內容對(dui)您(nin)有幫助。您(nin)在(zai)使用 TDengine 這款 TIme-Series Database 的過程(cheng)中,若遇到(dao)棘手的問題(ti)或對(dui) TDengine 有改進意見,歡迎在(zai) //github.com/taosdata/TDengine/issues 上給我們(men)提 Issue ,內容越詳細(xi)越好,也可微信掃下方二維碼加(jia)入社區,與大(da)家進行(xing)交(jiao)流 ~ 最后,感謝(xie)使用 TDengine!



























