PDA

Просмотр полной версии : Клиены вдруг начинают запрашивать у сокет сервера <policy-file-request/>


altermann
11.10.2010, 02:19
Здравствуйте.

Такая проблема:

Есть приложение в контакте и мейле, по сути - мультичат.
Клиент на flex 4, сервер - php.
Технически сервер - виртуальный выделенный сервер.
Клиент общается с серваком через сокеты.

Все хорошо, все работает, но, к вечеру ситуация становиться плачевной: когда набирается несколько десятков человек, клиенты, вдруг, начинают запрашивать <policy-file-request/>. Сервак отправляет кроссдомен, клиенты отключаются и больше связь не устанавливается. Если кто-то пытается подключиться новый - не получается, та же история...
Что может служить причиной данной проблемы? Не хватает ресурсов серва? По данным статистики юзаеться порядка 15%.
Решил сменить сервер, тот был у fastvps.ru, взял тестовый у ispserver.com - аналогично.

Спасибо.

Psycho Tiger
11.10.2010, 13:55
Все на сокеты перешли и у всех одна проблема...
После запроса о файле политики клиент и должен отключится. А потом поднять новое соединение, но уже его не спрашивать.

altermann
11.10.2010, 15:03
Я понимаю, что должен отключаться. У меня так все и работает. Клиент подключается, запрашивает файл, сервак отдает, клиент отключается, подключается на другой порт и работает нормально с сокетом. Но, иногда бывает так, что все работает, работает, сутки работает, а тут раз, и перестает..... обычно это под вечер, когда собирается много людей..
А что именно не работает описано выше....

etc
11.10.2010, 17:56
Отдавать надо и по порту соединения тоже.

altermann
11.10.2010, 19:48
так, допустим, я что-то не понял, что-то сделал не правильно, хотя код работы с сокетами я скопипастил, но, почему оно может работать нормально долгое время (час, два, три, сутки - когда как), а потом резко прекратить? Не выкладываю код, потому что, как мне кажется, в этом смысла нет, я просто в тупике уже.....

а отдается кроссдоменник у меня на оба порта (один класс коннекта к сокетам и работы с ними создается два раза - на два порта).

membrilius
11.10.2010, 21:56
У Вас соединение теряется? Допустим может перезагружаться сервер, или проблемы в сокет-сервере, мониторте порт. Потому-что помойму когда флешка вдруг сама начинает слать <policy-file-request/> то это переподключение.

Проще сделать мотиноринг на сокет-сервере, пусть пишет всю историю в файл.

altermann
12.10.2010, 00:38
Логи запросов в сокет и ответов у меня ведуться, вот пример, что происходит:


[2010-10-10 23:22:28] [SocketServer] Wrote : <response><request>changeGame</request><data><id>40</id><online>4</online><started>0</started></data></response> to Resource id #74
[2010-10-10 23:22:28] [SocketServer] Wrote : <response><request>changeGame</request><data><id>40</id><online>4</online><started>0</started></data></response> to Resource id #17044
[2010-10-10 23:22:28] [SocketServer] Wrote : <response><request>changeGame</request><data><id>40</id><online>4</online><started>0</started></data></response> to Resource id #17466
[2010-10-11 03:22:38] [SocketServer] NEW CLIENT Resource id #1498 [IP: 85.141.193.53]
[2010-10-11 03:22:38] [SocketServer] Wrote : п»ї<cross-domain-policy>
<allow-access-from domain="*" to-ports="5814"/>
</cross-domain-policy> to Resource id #1498
[2010-10-11 03:22:38] [SocketServer] REMOVING CLIENT Resource id #1498
[2010-10-11 03:22:41] [SocketServer] NEW CLIENT Resource id #1503 [IP: 188.162.221.49]
[2010-10-11 03:22:41] [SocketServer] Wrote : п»ї<cross-domain-policy>
<allow-access-from domain="*" to-ports="5814"/>
</cross-domain-policy> to Resource id #1503
[2010-10-11 03:22:41] [SocketServer] REMOVING CLIENT Resource id #1503
[2010-10-11 03:23:06] [SocketServer] NEW CLIENT Resource id #1508 [IP: 82.196.90.237]
[2010-10-11 03:23:06] [SocketServer] Wrote : п»ї<cross-domain-policy>
<allow-access-from domain="*" to-ports="5814"/>
</cross-domain-policy> to Resource id #1508
[2010-10-11 03:23:06] [SocketServer] REMOVING CLIENT Resource id #1508



лога запроса, к сожалению, не сохранилось, только ответы, тем не менее, даже тут видно, что все было ок. В какой-то момент, как буд-то действительно все клиенты отключаются и начинают коннектиться заново, сервер отправляет кроссдомен и все, коннект не восстанавливается.
С чем может быть связано такое поведение сервера? Не хватает ресурсов? Не думаю, что не хватает, но мало ли. Получал такое уже на двух похожих виртуальных серверах разных хостеров.

Может быть это нормально и надо просто переустанавливать подключение? Как это сделать?

Спасибо.

altermann
15.10.2010, 09:21
Походу, разобрался =)

Немного переписал скрипт + сделал небольшую тестовую утилзу.
Проблема очевидна - слишком много одновременных запросов. Даже самый лучший сервак вешался.... если убрать нагрузку, то становиться нормально.

Теперь надо думать как снижать нагрузку......