我使用的是AE socket API,我做了以下测试:
class TestHandler(webapp.RequestHandler):
def get(self):
size = 1024 * 4
start = datetime.datetime.now()
for _ in range(10):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('some.ip.here', 12345))
sock.send('some dummy data')
data = ''
newData = 'dummy'
while newData != '' and not newData.endswith('\r\n'):
newData = sock.recv(size)
#print newData
data += newData
print '.'
sock.close()
#print 'timespent:' + str(datetime.datetime.now() - start)
logging.info('timespent:' + str(datetime.datetime.now() - start))
我已经开始做一些测试,因为我注意到一个请求需要大约400毫秒到500毫秒,响应请求的服务器在google GCE实例上。请求的处理时间段平均为0:00:00.0005秒。所以大部分延迟与网络有关。我想一个好的响应时间应该是100毫秒,如果我知道这需要一些硬的东西,我甚至可以用200毫秒。但我不认为这应该有什么不同,除了一些安全方面的东西。但这将禁止某些功能,而不是让它变慢。在
有人能解释一下为什么差别这么大吗?在
我花了相当长的时间试图重现这个问题,用具体的公共网站,似乎我就是做不到
我的代码版本(足够丰富,因此它实际上运行并显示结果):
那个IP号码是一个www.google.com(使用主机名
www.google.com
代替它可能更好,但是您指定了一个IP号,所以我尝试了)而且交互当然只是使用古老的http1.0协议获取其主页。在结果各不相同,但最典型的是我刚刚得到的结果:
^{pr2}$我在本地使用
dev_appserver.py
运行的数字与上传到<myappid>.appspot.com
的大致相同。在所以我做了一个完全独立于GAE的版本:
猜猜看,在一堆圆点之后,我发现了一个非常相似的结果
所以我不知道该怎么办。也许一年前你做观察的时候有个问题,现在已经消失了;也许这和你连接到的特定IP的地理位置有关(靠近你的本地机器,远离你的GAE应用程序运行的地方);谁知道没有更多的信息和具体的IP&c,这确实是一个整体,瞎猜你观察到了什么。在
在我的例子中,我现在坐的本地机器是在加利福尼亚州的桑尼维尔,我很确定这两个谷歌服务正在发挥作用(www.google.com以及我的appspot.com),就网络延迟而言,可能离这里不远(我的ping平均为50或60毫秒)。在
这将是一个很好的解决办法,在“未回答的”google app engine问题中投票最高的一个。。。!-)
相关问题 更多 >
编程相关推荐