Потеря запросов на «публикацию», отправленных на сервер вставки Pylons

Я отправляю почтовые запросы на сервер Pylons (обслуживаемый пастером), и если я отправляю их с любой частотой, многие из них не поступают на сервер. По одному нормально, но если я запускаю несколько (или более) в течение секунд, обрабатывается только небольшое количество. Если я отправляю без почтовых данных или с получением, все работает нормально, но размещение всего одного символа данных в полях сообщения приводит к огромным потерям.

Например, отправив 200, вернется 2. Отправляя 100 медленнее, 10 вернется.

Я делаю запросы внутри приложения Qt. Это будет работать нормально (нет данных):

QString postFields = "" QNetworkRequest request(QUrl("http://server.com/endpoint")); QNetworkReply *reply = networkAccessManager->post(запрос, postFields.toAscii());

И это приведет к тому, что будет обработана только часть запросов:

QString postFields = "" QNetworkRequest request(QUrl("http://server.com/endpoint")); QNetworkReply *reply = networkAccessManager->post(запрос, postFields.toAscii());

Я экспериментировал с включением use_threadpool и другими параметрами (threadpool_workers, threadpool_max_requests = 300), некоторые комбинации которых могут изменить результаты. немного (в лучшем случае 10 ответов из 200).

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

Любая помощь или совет с благодарностью.

Спасибо

Филип


person Philip McDermott    schedule 30.03.2010    source источник


Ответы (2)


Спасибо за ответ.

Отследил это до того, что paster serve поддерживает только HTTP 1.0 и поэтому не отвечал на первоначальные запросы с кодом 100.

Перешел на Apache, теперь все работает!

person Philip McDermott    schedule 31.03.2010

Не могли бы вы добавить логирование на стороне paster/pylons, чтобы найти, где именно теряются эти запросы? Вы уверены, что приложение QT работает правильно, может быть, это ограничение на количество одновременных подключений в QNetworkRequest? Сеть AFAIR QT использует отдельный поток для соединения, выделенного из пула потоков. Попробуйте добавить обработку ошибок на стороне QT.

person Yaroslav    schedule 30.03.2010
comment
Спасибо. Кажется, Qt ведет себя нормально, это был сервер из-за отсутствия поддержки HTTP 1.1. - person Philip McDermott; 31.03.2010