Назад | Перейти на главную страницу

Отладка ошибок ETIMEDOUT

Я пытаюсь отлаживать частые ошибки ETIMEDOUT на api.facebook.com (31.13.95.8) при выполнении HTTP-запросов GET с наших серверов Linux. Чтобы выяснить, проблема ли это на нашем сервере или на стороне Facebook, я выполнил эту команду:

$ mtr -r -c 10 --report-wide 31.13.95.8 -P 443
Start: Fri Mar 24 15:18:54 2017
HOST: lothlorien                         Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 108.170.241.35                      0.0%    10   12.3  12.4  12.3  12.8   0.0
  2.|-- 32934.hkg.equinix.com               0.0%    10   13.6  13.7  13.6  14.0   0.0
  3.|-- po102.psw02.hkg3.tfbnw.net          0.0%    10   13.1  13.1  13.0  13.3   0.0
  4.|-- 173.252.67.87                       0.0%    10   13.2  13.2  13.1  13.4   0.0
  5.|-- edge-star-shv-01-hkg3.facebook.com  0.0%    10   13.2  13.2  13.1  13.4   0.0

Однако, когда я запускаю эту команду (обратите внимание на дополнительный -T, который отправляет TCP SYN вместо пакетов ICMP ECHO), мы видим значительную потерю пакетов:

$ mtr -r -c 10 -T --report-wide 31.13.95.8 -P 443
Start: Fri Mar 24 15:20:51 2017
HOST: lothlorien                         Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 108.170.241.67                      0.0%    10   12.5  15.3  12.5  37.5   7.8
  2.|-- 32934.hkg.equinix.com               0.0%    10   14.5  14.4  13.8  15.7   0.3
  3.|-- po102.psw03.hkg3.tfbnw.net          0.0%    10   13.8  13.9  13.4  14.6   0.0
  4.|-- 173.252.67.5                        0.0%    10   14.0  14.2  13.7  14.7   0.0
  5.|-- edge-star-shv-01-hkg3.facebook.com 90.0%    10  250.7 250.7 250.7 250.7   0.0

По какой причине вторая команда показывает значительную потерю пакетов, а первая - нет?

Вы используете пул подключений к API? Вероятно, что пакеты SYN регулируются для предотвращения атак типа SYNflood.