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



























