2015-01-10 2 views
4

У меня возникла проблема при использовании большого (JSON) тела с запросами HTTP. Они отлично работали локально, но когда я развернул серверное приложение на экземпляр Google Cloud Compute, запросы не были получены полностью. Они были обрезаны около 82 кБ. Я заметил, что все работало нормально, когда я напрямую подключался к экземпляру без использования Балансирования нагрузки HTTP в середине. Также попробовал балансировку сетевой нагрузки, настроенную на использование порта 80, и он сработал. Таким образом, проблема связана с загрузчиком нагрузки HTTP.Балансировщик нагрузки HTTP вырезает часть большого тела запроса

Кто-нибудь нашел решение этой проблемы? Я хотел бы использовать Балансировщик нагрузки HTTP, потому что он лучше подходит моим требованиям (например, вы можете добавлять группы экземпляров в качестве целевой базы, в Network LB вам нужно указать каждый экземпляр отдельно).

+1

Вы также можете использовать группы экземпляров в сетевом LB, используя [управляемые группы экземпляров] (https://cloud.google.com/sdk/gcloud/reference/preview/managed-instance-groups/create). Есть ли другое требование, которое позволяет избежать использования сетевого LB? –

+0

В итоге я использовал Network LB с управляемыми группами экземпляров, и это решение хорошо работает для меня. –

+0

Я только что протестировал это с помощью 51 МБ случайных данных, создав скрипт CGI, который эхо ввода. Я обнаружил, что всегда возвращался к опубликованным данным. Не могли бы вы поделиться тем, какой веб-сервер и инфраструктура приложений вы использовали? – David

ответ

1

Проблема может возникнуть из-за того, что балансировщик нагрузки GCE HTTP doesn't support HTTP 100 Continue requests, что может повлиять на многопользовательские запросы POST. Решение заключается либо в том, чтобы не использовать multipart, либо с использованием балансировки нагрузки сети GCE (которая может или не может предложить то, что вам нужно).