Networking

從 ping 獲得的數據:是往返還是單程?

  • October 15, 2012

我有 2 台伺服器,每台伺服器位於兩個不同的位置。我需要在一個上託管應用程序,在另一個上託管數據庫伺服器。

從應用伺服器,如果我 ping 數據庫伺服器,我平均得到大約 30 毫秒。

我的問題是:

When I query the database from the app;

是否需要**30 ms + database_server_query_run_time**

或者;

是否需要**30 ms + database_server_query_run_time+ 30ms**

我想了解這一點。

它通常會比這兩個選項更多。

Ping 僅測量從客戶端到伺服器再返回的時間(rtt - 往返時間)

通常數據庫使用 TCP,所以你首先需要發送一個 SYN 數據包來啟動 TCP 握手(為了簡化,比如說 15ms* + cpu 時間,然後你收到和 SYN/ACK(15ms+cpu 時間),發回一個 ACK 和一個request(至少 15ms + cpu 時間),然後是 DB 處理查詢的時間,然後是時間(15ms + cpu)取回數據,還有一點要確認,然後關閉連接。

這當然不包括對數據庫的身份驗證(使用者名/密碼),也沒有加密(ssl 握手/DH 或任何需要的)。

*往返時間的一半,假設往返路線是對稱的(到達那裡的時間一半,回來的時間一半……ping回复的cpu處理時間很短)

引用自:https://serverfault.com/questions/438475