dklab_realplexor icon indicating copy to clipboard operation
dklab_realplexor copied to clipboard

Сервер отправляет оборваные ответы

Open andkom opened this issue 12 years ago • 3 comments

Использую реалплексор на нагруженном проекте. Когда выполняю метод cmdOnline, получаю такую ошибку:

Fatal error: Uncaught exception 'Realplexor_Exception' with message 'Response length (56421) is different than specified in Content-Length header (77807): possibly broken response

Так-же такая ошибка иногда возникает при вызове метода cmdWatch.

Пробывал отправлять команды напрямую через телнет, получаю оборваные ответы, тоесть проблема явно с сервером.

andkom avatar Jun 13 '13 10:06 andkom

Есть такая проблема, что иногда ответ не помещается целым куском в буфер отправки tcp ОС, а разбивать отправку на несколько независимых кусков реалплексор не умеет архитектурно (ПРИЕМ "склеивать" из кусков он умеет, а вот отправку - нет, т.к. у него нет своих собственных буферов отправки: сформировал ответ, выплюнул его разом и забыл).

​Попробуйте поискать, как увеличить размер буфера приема tcp в линуксе.

On Thu, Jun 13, 2013 at 3:46 AM, Andrei K. [email protected] wrote:

Использую реалплексор на нагруженном проекте. Когда выполняю метод cmdOnline, получаю такую ошибку: Fatal error: Uncaught exception 'Realplexor_Exception' with message 'Response length (56421) is different than specified in Content-Length header (77807): possibly broken response Так-же такая ошибка иногда возникает при вызове метода cmdWatch.

Пробывал отправлять команды напрямую через телнет, получаю оборваные ответы, тоесть явно проблема с сервером.

Reply to this email directly or view it on GitHub: https://github.com/DmitryKoterov/dklab_realplexor/issues/27

dimikot avatar Jun 13 '13 15:06 dimikot

та же проблема, но сервер обрывает ответы с JS Это работает на странице монитора и должно собирать данные с множества каналов за последнии несколько минут.

http://realplex01.xxxxxxxxx.com/?identifier=1392765575.7760000000:support_id_9916560,1392765575.7770000000:support_id_9916561,1392765575.7770000000:support_id_9916573,1392765575.7770000000:support_id_9916583,1392765575.7770000000:support_id_9916690,1392765575.7770000000:support_id_9916712,1392765575.7770000000:support_id_9916738,1392765575.7770000000:support_id_9916751,1392765575.7770000000:support_id_9916754,1392765575.7770000000:support_id_9916758,1392765575.7770000000:support_id_9916762,1392765575.7770000000:support_id_9916768,1392765575.7770000000:support_id_9916769,1392765575.7770000000:support_id_9916679,1392765575.7770000000:support_id_9916764,1392765575.7770000000:support_id_9916770,1392765575.7770000000:support_id_9916771,1392765575.7770000000:support_id_9916784,1392765575.7770000000:support_id_9916786,1392765575.7770000000:support_id_9916772,1392765575.7770000000:support_id_9916778,1392765575.7770000000:support_id_9916781,1392765575.7770000000:support_id_9916782,1392765575.7770000000:support_id_9916705,1392765575.7770000000:support_id_9916746,1392765575.7770000000:support_id_9916773,1392765575.7770000000:support_id_9916775,1392765575.7770000000:support_id_9916776,1392765575.7770000000:support_id_9916777,1392765575.7770000000:support_id_9916780,1392765575.7770000000:support_id_9916783,1392765575.7770000000:support_id_9916766,1392765575.7770000000:support_id_9916779,1392765575.7770000000:support_id_9916785,support_request_process&ncrnd=1392766177184

Если данных больше 16к то они обрезаются, соответственно ошибки и запрос повторяется X раз.

Пример обрезанного ответа:

[
  {
    "ids": { "support_id_9916751": "1392765581.01901932852" },
    "data": "{\"cmd\":\"msg\",\"type\":\"op\",\"time\":\"15:19:41\",\"text\":\"sure thing, the 6 pcs\\\/\",\"name\":\"Maruwa\"}"
  },
  {
    "ids": { "support_id_9916762": "1392765627.18003308272" },
    "data": "{\"cmd\":\"msg\",\"type\":\"cl\",\"text\":\"IP: 205.255.24.0, OS: Android (samsung, SGH-T599N), version: 4.1.2, app version: 2.4.4, resolution: 480x800, fingerprint: 9ede0dd2-7f9b-4086-b534-57fab0ef0213\",\"name\":\"Claudia\"}"
  },
... пропущено много строк ...
  {
    "ids": { "support_id_9916776": "1392765963.46914281638" },
    "data": "{\"id\":\"9916776\",\"cmd\":\"accept_request\",\"op_id\":\"450\",\"name\":\"Liz\"}"
  },
  {
    "ids": { "support_id_9916776": 

Пробовали увеличить размер буфера приема tcp, не помогло

p.s. используем последнюю C версию

Спасибо.

borgius avatar Feb 18 '14 23:02 borgius

у меня проблема решилась случайным образом - в процессе поиска причины ошибки добавил лог в perl/Realplexor/Common.pm logger("out: " . $out); в конец _do_send. по какой-то причине реалплексор перестал резать ответы

ofdrykkja avatar May 11 '15 11:05 ofdrykkja