提高Web服务的速度 - 如何

时间:2010-03-20 17:20:46

标签: django performance web-services

我们的客户端 - 服务器产品之间的协议是XML over HTTP。在这里,客户端向Web服务器发出GET / POST查询,服务器用XML响应。服务器是使用django编写的。服务器必须在网络上,因为全世界有许多客户使用它。

服务器代码使用大量的memoization,并且数据库查询也很少 - 大多数查询都没有任何数据库查询,其中一些查询最多只有1个。

最大的问题是速度。每个查询都需要接近5秒的时间进行回复。回复的数据也非常少 - 在4-6 Kb的范围内。

提高网络服务速度的机制有哪些?这是编写客户端服务器的常用方法吗?还有其他技术吗?我们错过了吗?

谢谢 ķ

编辑:我忘了提一件事 - 我们在云上运行它。我发现的另一件事是,在一个好的网络中,它非常快 - 大约1-2秒,所以建立TCP会话需要时间吗?

3 个答案:

答案 0 :(得分:1)

良好的第一步是找出延迟的来源。

尝试使用像Wireshark这样的工具来查看线路上HTTP流量的时间作为第一步。

答案 1 :(得分:1)

我正在使用tomfanning,这听起来像是延迟问题(假设您以理智的方式提供django应用程序并且服务器没有太多负载)。

我会将ping添加到要尝试的事项列表中,然后检查基线网络延迟。当您从服务器计算机本身查询服务时,还要检查速度,以确保它的网络延迟。

如果它不是网络,您可以在cProfile(python -m cProfile start_the_server.py)下运行django开发服务器,运行一些查询,然后按Ctrl-C获取逐个功能的分析信息。

最后一个想法,python中XML序列化的一些常见选择可能非常慢。使用lxml。这不应该占4-6k的5s响应时间。

答案 2 :(得分:0)

这是基于我对基于sql和c#的webservices的经验。关于django不太确定。 这些性能的主要元凶将是数据库检索部分。尝试隔离db查询以检查性能