TDengine Database 是一款客戶端-服務端模式產(chǎn)品,當客戶端遇到鏈接故障,不能正常連接到服務端時,很多情況下是由于網(wǎng)絡問題引起的,可以使用TDengine 客戶端程序taos內(nèi)嵌的網(wǎng)絡連通檢測工具來快速定位原因。
2021.08.27更新,新增網(wǎng)絡測速工具:https://tdengine.com/2021/08/27/2943.html
在使用taos內(nèi)嵌的網(wǎng)絡連通檢測工具前,請先按照下面的步驟進行網(wǎng)絡狀況檢查:
- 檢查網(wǎng)絡環(huán)境
- 云服務器:檢查云服務器的安全組是否打開TCP/UDP 端口6030-6042的訪問權(quán)限
- 本地虛擬機:檢查網(wǎng)絡能否ping通,盡量避免使用
localhost作為hostname - 公司服務器:如果為NAT網(wǎng)絡環(huán)境,請務必檢查服務器能否將消息返回值客戶端
- 確??蛻舳伺c服務端版本號是完全一致
- 在服務器,執(zhí)行
systemctl status taosd檢查taosd運行狀態(tài)。如果沒有運行,啟動taosd - 確認客戶端連接時指定了正確的服務器FQDN (Fully Qualified Domain Name(可在服務器上執(zhí)行Linux命令hostname -f獲得)
- ping服務器的FQDN,如果沒有反應,請檢查你的網(wǎng)絡,DNS設(shè)置,或客戶端所在計算機的系統(tǒng)hosts文件。如果所在的網(wǎng)絡中沒有DNS,或DNS中沒有配置服務器的FQDN,必須在計算機系統(tǒng)的hosts文件中配置。比如服務端的hostname是 abc.fast.com,ip是192.168.1.131。對于Linux系統(tǒng)的客戶端,在/etc/hosts文件添加如下的一條記錄:192.168.1.131 abc.fast.com對于Windows系統(tǒng)的客戶端,在C:\Windows\System32\drivers\etc\hosts文件中添加如下一條記錄:192.168.1.131 abc.fast.com
- 檢查防火墻設(shè)置,如果使能了防火墻,請確認TCP/UDP 端口6030-6042 是打開的
- 對于Linux上的JDBC(ODBC, Python, Go等接口類似)連接, 確保libtaos.so在目錄/usr/local/lib/taos里, 并且/usr/local/lib/taos在系統(tǒng)庫函數(shù)搜索路徑LD_LIBRARY_PATH里
- 對于windows上的JDBC, ODBC, Python, Go等連接,確保driver/c/taos.dll在你的系統(tǒng)搜索目錄里 (建議taos.dll放在目錄 C:\Windows\System32)
- 如果仍不能排除連接故障,請使用taos內(nèi)嵌的網(wǎng)絡連通檢測工具:驗證服務器和客戶端之間指定的端口連接是否通暢(包括TCP和UDP)。
有兩種測試場景:一是環(huán)境中沒有在運行的taosd服務,二是環(huán)境中已經(jīng)有在運行的taosd服務。下面分別對這兩種情況的測試進行描述。
一、環(huán)境中沒有運行的taosd服務
taos 通過參數(shù) -n 來確定運行服務端功能,還是客戶端功能。
-n server:表示運行檢測服務端功能;
-n client:表示運行檢測客戶端功能。
1)在服務器運行taos內(nèi)嵌的網(wǎng)絡連通檢測的服務端功能,如:taos -n server -P 6030 -e 6042 -l 1000;
2)在客戶端運行taos內(nèi)嵌的網(wǎng)絡連通檢測的客戶端功能,如:taos -n client -h host -P 6030 -e 6042 -l 1000;
該功能相關(guān)的5個參數(shù)說明:
-n :指示運行網(wǎng)絡連通檢測的服務端功能,或客戶端功能,缺省值為空,表示不啟動網(wǎng)絡連通檢測;
-h:指示服務端名稱,可以是ip地址或fqdn格式。如:192.168.1.160,或 192.168.1.160:6030,或 hostname1,或hostname1:6030。缺省值是127.0.0.1。
-P :檢測的起始端口號,缺省值是6030;
-e:檢測的結(jié)束端口號,必須大于等于起始端口號,缺省值是6042;
-l:指定檢測端口連通的報文長度,最大64000字節(jié),缺省值是1000字節(jié),測試時服務端和客戶端必須指定相同;
服務端設(shè)置的起始端口和結(jié)束端口號,必須包含客戶端設(shè)置的起始端口和結(jié)束端口號;對于起始端口號有三種設(shè)置方式:缺省值、-h指定、-P指定,優(yōu)先級是:-P指定 > -h指定 > 缺省值??蛻舳诉\行的輸出樣例:
ubuntu@u60 ~/taos/test$ ./taos -n client -h ubuntu-7060 -P 6030 -e 6042 -l 16000
host: ubuntu-7060 start port: 6030 end port: 6042 packet len: 16000
tcp port:6030 test ok. udp port:6030 test ok.
tcp port:6031 test ok. udp port:6031 test ok.
tcp port:6032 test ok. udp port:6032 test ok.
tcp port:6033 test ok. udp port:6033 test ok.
tcp port:6034 test ok. udp port:6034 test ok.
tcp port:6035 test ok. udp port:6035 test ok.
tcp port:6036 test ok. udp port:6036 test ok.
tcp port:6037 test ok. udp port:6037 test ok.
tcp port:6038 test ok. udp port:6038 test ok.
tcp port:6039 test ok. udp port:6039 test ok.
tcp port:6040 test ok. udp port:6040 test ok.
tcp port:6041 test ok. udp port:6041 test ok.
tcp port:6042 test ok. udp port:6042 test ok.
如果某個端口不通,會輸出 port:xxxx test fail的信息。如:
ubuntu@u60 ~/taos/test$ ./taos -n client -h ubuntu-7060 -P 6030 -e 6042 -l 16000
host: ubuntu-7060 start port: 6030 end port: 6042 packet len: 16000
tcp port:6030 test ok. udp port:6030 test ok.
connect() fail: Connection refused tcp port:6031 test fail.
Read ack pkg len: -1, less than req pkg len: 16000 from udp port: 6031 udp port:6031 test fail.
tcp port:6032 test ok. udp port:6032 test ok.
tcp port:6033 test ok. udp port:6033 test ok.
tcp port:6034 test ok. udp port:6034 test ok.
tcp port:6035 test ok. udp port:6035 test ok.
tcp port:6036 test ok. udp port:6036 test ok.
tcp port:6037 test ok. udp port:6037 test ok.
tcp port:6038 test ok. udp port:6038 test ok.
tcp port:6039 test ok. udp port:6039 test ok.
tcp port:6040 test ok. udp port:6040 test ok.
tcp port:6041 test ok. udp port:6041 test ok.
tcp port:6042 test ok. udp port:6042 test ok.
二、環(huán)境中有運行的taosd服務
此時只需要在客戶端環(huán)境運行 taos客戶端測試功能, 通過參數(shù) -n rpc:表示向正在運行的taosd服務發(fā)起檢測。其他參數(shù)與上面完全相同。客戶端運行的輸出樣例:
plum@plum-VirtualBox ~/git/v20 $ taos -n clients
host: 127.0.0.1 start port: 6030 end port: 6042 packet len: 1000
TCP port:6030 test OK UDP port:6030 test OK
TCP port:6031 test fail. udp port:6031 test fail.
TCP port:6032 test fail. udp port:6032 test fail.
TCP port:6033 test fail. udp port:6033 test fail.
TCP port:6034 test fail. udp port:6034 test fail.
TCP port:6035 test OK UDP port:6035 test OK
TCP port:6036 test fail. udp port:6036 test fail.
TCP port:6037 test fail. udp port:6037 test fail.
TCP port:6038 test fail. udp port:6038 test fail.
TCP port:6039 test fail. udp port:6039 test fail.
TCP port:6040 test fail. udp port:6040 test fail.
TCP port:6041 test fail. udp port:6041 test fail.
TCP port:6042 test fail. udp port:6042 test fail.
表示此時taosd只監(jiān)聽了6030/6035端口,其他端口暫時沒有啟用。
6041是HTTP模塊使用的端口、6042是arbitrator使用的端口,此方法無法檢測這兩個端口。只能使用第一種方法進行檢測。



互聯(lián)網(wǎng).png)



-1.png)











伙伴.png)
伙伴.png)



