1
Почему вебсервер получает только часть из многочисленных отправленных GET запросов через сокеты?
Здравствуйте, я отправляю много GET запросов, используя один socket на C. Проблема в том, что сервер получает только малую часть. Но если я буду каждый раз открывать, отправлять запрос и потом закрывать сокет, то все окей. Флаг TCP_NODELAY не помог. Использую SOCK_STREAM.
-
JereПожаловаться 28.03, в 13:00До сервера доходят все запросы, но он как будто не видит большую часть если я подряд много отправляю. Но если я перед отправкой запроса читаю весь входящий буфер то все окей. Вся отправка проходит внутри одного потока на одно соединение сокета.
-
Вообще говоря, данные, переданные в рамках одной TCP-сессии, пропадать не должны никуда. Если Вы соберете дамп траффика или же замените веб-сервер на netcat, пишущий в файл, то Вы должны увидеть все свои запросы.
А Вы уверены, что на стороне веб-сервера их вообще успевают корректно обработать?Нравится 1 комментарий Поделиться-
До сервера доходят все запросы, но он как будто не видит большую часть если я подряд много отправляю. Но если я перед отправкой запроса читай весь входящий буфер то все окей.
-
-
А сервер-то многопоточный? Такое бывает, если все запросы обрабатываются в одном потоке.Нравится 4 комментария Поделиться
-
Вообще многопоточный, но каждый поток держит одно соединение, и поэтому пробелма вылазит внутри каждого потока.
-
Т.е. каждому потоку выдается своя куча пакетов? Вот поэтому они не могу их обработать сразу все, т.к. требуется время на прием данных. Надо просто организовать очередь: сделать пул потоков, который будет только принимать входящие блоки данных и после приема помещать их в очередь на обработку, а рабочие потоки должны брать из этой очереди блоки и обрабатывать их. Как-то так.
-
каждый поток управляет только один сокетом, каждый сокет это абсолютно разные сервера. Проблема появляется не на исходящей стороне, а на входящей, пакеты уходят, а сервер на который они приходят как будто часть отфильтровывает. Но если в потоке каждый раз ждать ответа с сервера на каждый пакет и только потом отправлять новый пакет то все нормально, ощущение что сервер не может обрабатывать с такой скоростью пакеты, но тестировалось на разных серверах и все одинаково плохо отвечали.
-
а прошу прощения, Вы говорите про сервер, сервер тут абсолютно не причем, сервером может быть любой сайт к примеру.
-
Ваш ответ на вопрос
Войдите, чтобы написать ответ
Войти через TM IDПохожие вопросы
- 1
- 1
-
1
- 0
- 0
- 0
- 2
- 1
- 0
- 0
- Показать ещё