我正在测试ping时间,发现从亚马逊ec2 linux实例的东海岸数据中心到windows azure实例的ping时间为3ms。由于它太小,我想知道我做错了什么。我相信天蓝色的数据中心位于弗吉尼亚州。当我从计算机连接时,我得到57-60ms,这让我觉得我的测试是正确的。当我在azure实例上测试127.0.0.1时,我得到8-10ms,这让我觉得在测试ec2到azure时我应该至少超过10ms。我只是想知道在不同数据中心的两台计算机之间是否可以进行3ms ping。我无法从命令行ping,因为这两个框都不响应标准ping。我的程序发送一个随机数启动一个计时器,然后检查返回数据包是否包含该数字,所以我认为测试是正确的。
loop{
byte[] senddata;
senddata = CreatePacketString(
Guid.Parse(players.randomTestGuidPlayer[2]),
players.udpc[2].packetnumber, moveto2);
Random g = new Random();
int k = g.Next(5000);
players.udpc[2].packetnumber += k;
Send(players.udpc[2].listener, getServerIP(), getServerPort(), senddata);
long t1 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
bool found = false;
while (found == false)
{
byte[] data = IncomingPacket(players.udpc[2].listener.Receive(ref players.udpc[2].groupEP));
byte[] packetnumberAsBytes = new byte[4];
Buffer.BlockCopy(data, 10, packetnumberAsBytes, 0, sizeof(Int32));
Int32 gt = BitConverter.ToInt32(packetnumberAsBytes, 0);
if (gt == players.udpc[2].packetnumber - k)
{
found = true;
}
if(found == false)
System.Console.WriteLine(String.Format("UNEXPECTED"));
}
long t2 = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
System.Console.WriteLine(String.Format("pings {0}", t2 - t1));
}
答案 0 :(得分:0)
这实际上取决于那个时刻网络的情况。 您可以尝试使用常用工具(例如Azure Speed Test)登录虚拟机并查看统计信息 - 它不仅会显示ping,还会显示许多其他相关数字。
我不会尝试将世界上可用的任何数字与云供应商网络基础架构内发生的事情进行比较。例如,Microsoft Azure云中的数据中心位于自有网络中。我猜想亚马逊也一样。
答案 1 :(得分:0)
我发现了问题。
在设置t1之前调用send函数是个坏主意。
with()
我相信这些声明并非紧接着发生,因为操作系统会暂停线程来处理UDP发送。然后有一段时间我会设置时间,但这确实需要在发送之前发生,因为我需要将该时间记录在线程之外。这导致ping太低了。