本篇文章由於因公司專案上線,需要對專案環境進行壓力測試。在壓測過程中,所有打壓機從公網對目標專案伺服器進行壓力測試,發現和內網壓力測試的效能結果差距10倍左右,在調整主機對dns的解析順序之後,解決了壓測結果差距大的問題。
故此篇文章主要從linux伺服器解析順序開始分析,了解一下linux伺服器解析順序,以及速度,最後在對比改變的前後效能差距有多少。
主機dns解析的步驟如下:
在linux系統上(如centos7)上,需要乙個nscd服務來快取dns解析資訊,在一些雲平台的預設映象中不安裝此服務, 所以這裡沒有快取的產生。那麼解析順序就變成了 本機hosts→ dns伺服器。
在以上三個步驟中,快取依賴nscd服務,該服務將dns解析的內容快取在記憶體中,主機解析直接去記憶體中讀取對應的解析記錄,且解析的順序也是主機解析步驟的第一步,速度最快; 在第二步中查詢本機的hosts檔案,主機每次都會去開啟本地磁碟上的檔案進行對應的查詢以及解析,與快取相對應速度會慢很多;第三步在快取以及本機hosts檔案都沒有對應的解析後,主機會向配置的dns伺服器傳送查詢解析請求,整個過程可能由於網路或者dns伺服器的響應速度而受到很大的影響,按照主機的解析順序來看,先一步的速度都會優於下一步的速度。
可能在不同的環境中也有一些不同的策略,需要直接去請求dns伺服器。往往解析乙個網域名稱時,先會找/etc/hosts檔案(沒有安裝nscd服務),如果/etc/hosts檔案沒有對應,才會去找dns,那麼有什麼方式,讓主機先找dns呢?
在/etc/nsswitch.conf這個檔案裡定義:
#本節中,dns快取的解析順序原本是由 hosts → dns
hosts: files dns #
找到這段,改成下面這樣
hosts: dns files
這樣主機就會去先找dns,在去查詢hosts。
nscd(name service cache daemon)是一種能夠快取 passwd、group、hosts 的本地快取服務,分別對應三個源 /etc/passwd、/etc/hosts、/etc/resolv.conf。其最為明顯的作用就是加快 dns 解析速度.
這裡利用 nscd 的 hosts 快取服務來實現 linux 下的 dns 快取。
nscd(name service cache daemon)是服務快取守護程序,它為nis和ldap等服務提供更快的驗證。不管是什麼系統,快取是一項非常重要的機制,快取的主旨就是提高客戶端訪問速度。
1.開啟nscd dns快取服務的優點和缺點
2.nscd安裝
3.配置dns快取
這裡就不解釋所有配置的含義。只解釋簡單需求完成的配置。
enable-cache hosts yes #這個服務除了dns快取之外還可以快取passwd,group,servers
4.清除指定型別快取
$ nscd -i passwd$ nscd -i group
$ nscd -i hosts
5.dns
快取在伺服器上的作用
在需要通過網域名稱與外界進行資料互動的時候,dns快取就派上用場了,它可以減少網域名稱解析的時間,提高效率。例如以下情況
由於是壓測人員自定義的壓測策略,這裡只做了乙個簡單的平均時延測試,主要對比本機hosts和快取的效能差距。
主要過程為centos7系統的主機以36000人每秒300人次像網域名稱位址傳送登入請求.
解析方式
壓測總人數
每秒登入
平均時延(ms)
本地hosts
36000
300152
快取36000
300118
#根據公司政策,只能提供以上一些資料.
2 1 2主機解析
在伺服器繫結與監聽埠,首先要利用dns伺服器解析主機。解析主機可以用dns的resolve方法,該方法的原型如下 public static iphostentry resolve string hostname iphostentry 是乙個為internet主機位址資訊提供容器的類,該類包含了諸...
主機位元組順序和網路位元組順序
不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...
網路位元組順序與主機位元組順序轉換
網路位元組順序與主機位元組順序轉換 在進行網路程式設計時,由於網路位元組的順序和主機的位元組順序可能存在不同,需要進行轉換以統一 格式 網路位元組順序是tcp ip中規定好的一種資料表示格式,它與具體的cpu型別 作業系統等無關,從而可以保證資料在不同主機之間傳輸時能夠被正確解釋。網路位元組順序採用...