41

I have 2 servers, each in two separate locations. I need to host an application on one, and the database server on the other.

From the app server, if I ping the database server, on average I get about 30ms.

My question is:

When I query the database from the app;

Is it going to take 30 ms + database_server_query_run_time

Or;

Is it going to take 30 ms + database_server_query_run_time + 30ms

I would like to understand this please.

Phil
  • 553

3 Answers3

35

It will usually take more then those two options.

Ping measures just the time from client, to server, and back again (rtt - round trip time)

Usually databases use TCP, so you first need to send a SYN packet to start the TCP handshake (to simplify let's say 15ms* + cpu time, then you recieve and SYN/ACK (15ms+cpu time), send back an ACK and a request (atleast 15ms + cpu time), then the time for the DB to process the query, and then the time (15ms + cpu) to get the data back, and a bit more to ack, and close the connection.

This is ofcourse not counting the authentication (username/password) to the database, and no encryption (ssl handshakes/DH or whatever is needed).

*half of a round trip time, assuming the route there and back is symmetrical (half the time to get there, and half to get back... cpu processing time for ping reply is very short)

mulaz
  • 10,962
9

The ping time is round trip. If you think about it -- how could it measure the one way time? So it will take 30ms plus the query time.

0

The ping time would represent all three together, so it would include the time from app to database server, the time the database query took to complete ( as it creates the timestamp for the response after the query is completed ), and the time it took in transit back to the app server round-trip.

So in short ping is the all-inclusive round trip time it took from a packet being sent to it's response arriving back round-trip.

The "ping" of a service is usually measured in the average of multiple pings, so a ping could mean one single packet sent or it could be referring to the average value of all of the round trip times. And so if you took the ping's round trip time value from the last 100 packets and all together they average 30ms, then you would say "it has a 30ms ping".

Amrita
  • 1