我编写了一个 C# 应用程序,用于将数据发布到我的 GoDaddy 共享 Linux 网络服务器上的脚本。该应用程序循环发出 100 个请求,并且没有失败,第一个请求总是超时。其余 99 个成功。整个过程大约需要 45 秒。网络服务器位于美国,我在新加坡。
进行了一些故障排除,似乎紧随一个请求之后的请求都会成功。但如果我每 5 分钟发出一个请求,它们都会失败。
我在另一个网络服务器(非 GoDaddy,位于新加坡)上运行了相同的脚本,不仅 100 次都成功了,而且只用了大约一半的时间(21 秒)。时间差异可能是由于地理位置接近造成的。
我在我的 GoDaddy 主机上运行了跟踪路由,每次我都会得到以下结果:
1 1 ms <1 ms <1 ms 10.148.67.2
2 <1 ms <1 ms <1 ms 10.148.64.3
3 <1 ms <1 ms <1 ms 10.148.65.5
4 <1 ms <1 ms <1 ms 10.66.3.29
5 <1 ms <1 ms <1 ms 10.33.1.6
6 <1 ms <1 ms <1 ms 10.33.0.6
7 1 ms 3 ms 1 ms 203.202.234.194
8 1 ms <1 ms 1 ms 10.33.8.130
9 2 ms 2 ms 2 ms vlan33-fe3-18.br01.sin02.pccwbtn.net [63.218.165
.181]
10 266 ms 228 ms 219 ms te8-3.ccr02.sjc03.atlas.cogentco.com [154.54.11.
161]
11 294 ms 208 ms 210 ms te2-2.ccr02.sjc01.atlas.cogentco.com [66.28.4.77
]
12 174 ms 174 ms 174 ms te0-3-0-2.ccr22.lax01.atlas.cogentco.com [154.54
.2.149]
13 185 ms 185 ms 186 ms te8-7.ccr01.phx02.atlas.cogentco.com [154.54.80.
206]
14 187 ms 187 ms 187 ms 38.104.116.166
15 * * * Request timed out.
16 * * * Request timed out.
17 * * * Request timed out.
18 * * * Request timed out.
它总是在弹回后失败38.104.116.166
。
当请求来自新加坡甚至美国时,就会发生请求失败,因此不可能是客户端的防火墙/路由器问题。
简而言之,我彻底被难住了,当你与 GoDaddy 共享主机时,他们的客户服务并不是最好的,而且我无法诊断问题出在哪里。
问题出在 GoDaddy 方面吗?我可以/应该给他们施加压力让他们解决这个问题吗?另外,为什么只有第一个请求失败,而后面的所有请求都成功了?我不太了解 Web 服务器的内部工作原理,但这是否类似于服务器进入“睡眠”状态,第一个请求充当将其唤醒的 ping?
答案1
共享这可能是您遇到的问题。我想知道该服务器上还发生了什么。
如果这是我的服务器,我会tcpdump
在发出超时请求时运行它。如果看起来不错,我会strace
在 Apache 上使用。
它可以是网络问题,但这种可能性较小。
如果由于它是共享主机而无法执行任何操作,那么可能是时候告诉您的老板您至少需要一个 VPS 了。
答案2
如果您的网站有流量,我建议您购买 VPS 或专用主机。您将建立自己的服务器并安排好一切。:)