我有一个托管的 Web 应用程序,它从我们办公室的 REST Web 服务请求数据。每个页面调用一个(或多个)Web 服务,这些服务从我们的主机通过我们的防火墙(Watchguard Firebox)到达我们办公室的服务器。
突然间,应用程序的速度急剧下降。我们确定 Web 服务在外部调用时会随机超时(在办公室网络内调用时则正常)。
我很确定是我们的连接丢失了 web 服务调用,因此我编写了一个快速 php/curl 脚本,它经过多次迭代调用 web 服务并显示各种时间。
下面是一个示例输出,显示失败和成功的调用(超时时间为 5 秒):
http_code namelookup_time connect_time pretransfer_time starttransfer_time total_time
1 0 0.000096 0.0342 0.0000 0.0000 0.0342
2 200 0.000052 0.0332 0.1327 0.1751 0.1752
根据上面的迭代 #1,失败的请求似乎在connect
和之间失败pretransfer
。我不确定这是否表明连接已成功通过防火墙,或者防火墙是否仍会导致问题?
我们的防火墙显示了一系列nondata event
相关访问规则的日志消息。我们的 IT 团队告诉我这些都是例行公事,尽管我在 Google 上找不到任何关于这些的提及。我不确定这是否适合连接和预传输之间。
在消除了 webservice 服务器(通过内部测试)和实时 web 应用程序(通过在不同的外部服务器上测试不同的代码)后,我开始怀疑与办公室的连接。Firebox 非数据事件是否会导致连接和预传输之间出现问题?