У меня есть размещенное веб-приложение, которое запрашивает данные из веб-службы REST в нашем офисе. Каждая страница вызывает один (или несколько) веб-сервисов, которые отправляются с нашего хоста через наш брандмауэр (Watchguard Firebox) на сервер в нашем офисе.
Внезапно приложение резко замедлилось. Мы определили, что время ожидания веб-службы случайно истекает при внешнем вызове (нормально при вызове в офисной сети).
Я почти уверен, что это наше соединение отбрасывает вызов веб-сервиса, поэтому я написал быстрый скрипт php / curl, который вызывает веб-сервис на многих итерациях и показывает различные тайминги.
Ниже приведен пример вывода, показывающий как неудачный, так и успешный вызов (с таймаутом 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
сообщения журнала для соответствующего правила доступа. Наши ИТ-специалисты говорят мне, что это обычное дело, хотя я не могу найти упоминания об этом в Google. Я не уверен, подходит ли это между подключением и предварительным переносом.
После завершения работы с сервером веб-сервиса (путем внутреннего тестирования) и живого веб-приложения (путем тестирования другого кода на разных внешних серверах я подозреваю подключение к офису. Могут ли события, не связанные с данными firebox, вызывать проблему между подключением и предварительной передачей?