測試代碼如getaddrinfo_bench.c附件,需要手動編譯
編譯步驟,如果沒有g(shù)cc,安裝命令yum install gcc,安裝gcc
gcc getaddrinfo_bench.c -o test
打開一臺終端執(zhí)行抓包命令
tcpdump -i enp1s0 -w ./tcpdump_save.cap
參數(shù)說明:
-i 監(jiān)聽網(wǎng)卡,后跟網(wǎng)卡名
-w 把監(jiān)聽數(shù)據(jù)寫入到tcpdump_save.cap文件中
打開另一臺終端,運行測試程序
./test
當程序執(zhí)行完畢后,切換到運行tcpdump的終端下,執(zhí)行CTRL + C 停止抓包,然后使用wireshark工具打開tcpdump_save.cap 文件查看,可以觀察到transaction ID值出現(xiàn)重復的現(xiàn)象。
當客戶端高并發(fā)請求域名解析時,客戶端隨機生成transaction ID函數(shù)精度無法滿足高并發(fā)的情況,導致出現(xiàn)transaction ID重復的現(xiàn)象。
升級glibc軟件包至glibc-2.28-36.1.p03.ky10及以上版本,具體的修復生效方法:
[root@build ~]# yum update glibc
修復生效說明:升級相應版本后系統(tǒng)會立即生效。
getaddrinfo_bench.c | 下載 |