2016-10-04 2 views
-1

Я выступаю в качестве сервера, который получает несколько запросов от клиента в сокете и ручках в потоке.Максимальное число, если запросы на TCP-соединение

Должен ли я устанавливать любой параметр на уровне TCP для установки максимального количества запросов, с которыми может одновременно работать соединение? , потому что в моей стороне сервера, если при обработке запроса медленно я заметить, что другие запросы в очереди (клиент говорит запрос был отправлен, но я получить его с опозданием)

Просьба направлять мне

+0

Максимальное значение отсутствует, и вы не можете установить его, и это не решит вашу проблему, если бы вы могли. Запросы на соединение последовательны, и ваша проблема - это параллелизм или, скорее, его отсутствие. Вы должны обрабатывать каждый клиентский сокет в отдельном потоке. – EJP

+0

Я обрабатываю запрос в многопоточном режиме only.requests продолжают поступать последовательно в постоянном TCP-соединении, установленном?. Будет ли ждать ответа, пока он не отправит мне следующий запрос или не будет независим от погоды, я отправил ответ для предыдущего запроса. – jan

+0

Если вы уже «обрабатываете [соединения или] запросы в многопоточном режиме,« трудно, если не невозможно, посмотреть, что ваш вопрос на самом деле. То, как ваши клиенты могут вести себя по установленному соединению, абсолютно не имеет никакого отношения к установке максимального количества запросов на соединение. – EJP

ответ

1

Если это занимает много время для выполнения работы, и вы хотите обрабатывать несколько соединений одновременно, вы должны изменить, как вы это делаете.

Если вы активно используете много процессоров при обработке длинного запроса, вам понадобится несколько потоков. Это единственный способ получить больше процессорного времени/секунды - если у вас есть несколько ядер.

Если вы ожидаете таких вещей, как файл IO, вы можете вместо этого использовать асинхронную обработку для обработки запросов в одном потоке, но просто обрабатывайте небольшую часть за раз.

Установка максимального количества соединений TCP не поможет вам быстрее обрабатывать больше процессов. Он просто отклонит соединения и даже не разрешит первоклассный тип поведения первого порядка - он будет просто случайным, если какой-либо конкретный клиент когда-либо пройдет или нет.

+0

В настоящее время я обрабатываю запрос только в нескольких потоках. Но все же я вижу очередь, когда использование БД очень велико в моей стороне. Обычно для обработки запроса требуется 1 секунда, и я не сталкиваюсь с какой-либо проблемой. Но если обработка занимает около 3- Клиент 4 s говорит, что они не получают ответ на time.timeout составляет 25 с, но я обрабатываю и отправляю в 4 с. Где запрос лежит до сих пор. Запуск очереди в очереди? – jan

+0

Если ваша база данных слишком медленная, вам нужно ее ускорить. Независимо от того, хотите ли вы, чтобы ваши клиенты таймином или отказались от соединений, не имеет большого значения. Если вы насыщаете свою базу данных, возможно, вы не хотите принимать столько соединений, но есть много способов ее решения. Но настройка TCP-соединений, вероятно, является неправильным подходом. – xaxxon

Смежные вопросы