Ошибка тайм-аута возникает в приложении С#

Когда я отправляю данные из приложения С# (сервер Windows) на страницу PHP, которая работает на другом сервере (Ubuntu) с использованием метода POST,

я отправляю минимум 1000 запросов в секунду на страницу PHP,

Приложение С# является многопоточным приложением, как только оно получает данные, оно отправляет данные на php-страницу.

когда я постоянно публикую данные, я получаю ошибку тайм-аута публикации в приложении С#, после перезапуска приложения оно работает несколько часов. [Примечание: из-за того, что php требуется время для завершения задачи, поэтому ожидается новый запрос, он создает очередь, и время ожидания превышает 2 минуты, и я получаю ошибку тайм-аута].

Оба наших сервера используют максимум 50% ресурсов ЦП и ОЗУ.

я проверяю как код С#, так и код PHP, оба работают нормально, нет проблем или ошибок

и я также проверяю конфигурацию mysql, но я не знаю о конфигурации apache.

Конфигурация Apache установлена ​​по умолчанию

что я думаю, может быть, я должен настроить apache или php для обработки 1000 запросов в секунду, я точно не знаю, потому что тот же код работает нормально, пока запрос клиентов не увеличился.

заранее спасибо дружище :)


person Vetri Vel    schedule 10.12.2016    source источник


Ответы (2)


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

Дополнительные сведения см. в разделе Как предотвратить исчерпание сокетов/портов?. Чтобы убедиться, что нам нужно увидеть ваш код C#, чтобы увидеть, как вы освобождаете ресурс, который используете при создании вызова WebClient.

Если это проблема исчерпания портов, вам придется управлять исходящими вызовами на сервер PHP с помощью созданного вручную пула экземпляров WebClient - даже выпуск WebClient может не сразу освободить ресурсы ОС, которые WebClient использовал.

person PhillipH    schedule 10.12.2016
comment
Это была проблема с конфигурацией Ubuntu, я не включил быстрый cgi/fpm, теперь все работает нормально. - person Vetri Vel; 17.12.2016
comment
Было бы полезно, если бы вы опубликовали как проблему, с которой вы столкнулись, так и то, как вы ее исправили — это будет означать, что люди, которые ищут сообщение, похожее на вашу исходную проблему, узнают, что вызвало ее в вашем случае. Просто сказать мне, что я исправил это, не предоставив фактического решения, бесполезно для людей, которые обнаружат ту же проблему в будущем. Ресурс SO является одновременно телефоном доверия и ресурсом проблем/решений. - person PhillipH; 19.12.2016

спасибо за добрый ответ, братан, это была проблема с конфигурацией на сервере ubuntu, я не включал быстрый cgi, теперь он работает нормально

person Vetri Vel    schedule 17.12.2016