Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   приложение AIR зависает (windows 7) (http://www.flasher.ru/forum/showthread.php?t=197360)

geor 06.04.2013 01:49

приложение AIR зависает (windows 7)
 
Здравствуйте, такая проблема:
есть приложение AIR, работающее как сервер. К нему коннектятся клиенты, сервер выполняет определенные функции, отдает информацию. Периодически сервер зависает и расход оперативки резко увеличивается с 50мб до 600 и более. Через некоторое время его "отпускает". Дебагер не показывает большого расхода оперативной памяти, при этом он сам зависает. Из-за чего это может быть?
Тестирую локально - все ок, не зависает (т.е. когда сервер установлен локально и запросы идут локально).

caseyryan 06.04.2013 09:53

Цитата:

Из-за чего это может быть?
Ошибки в коде. Возможно где-то происходит зацикливание запросов или создание кучи объектов в цикле.
Может быть где-то цикл while используется, который вызывает зависание при определенных условиях. Или слишком много запросов,
которые при минимальном пинге на локалке могут успевать пройти нормально, а во внешке начинают копиться и тормозить весь сервер при их обработке.
Можно только гадать.

п.с. Почему именно AIR? Не самый ведь лучший вариант для сервера, мягко говоря. Кроссплатформенный сервер можно и на джаве сделать очень неплохой.
Тем более в AIR нет многопоточности

geor 06.04.2013 16:40

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

caseyryan 06.04.2013 16:58

Что-то не могу понять. Что за эир приложение? Оно не является ни клиентом ни сервером? А чем тогда является?
Цитата:

Если да, то каким образом лучше связать java c air приложением?
Либо сокеты, либо http. Как сейчас работает?

geor 06.04.2013 17:19

Adobe flash Air приложение, написанное на action script 3. Оно является сервером. Клиент коннектится к нему через сокет, получает сгенерированную картинку. Пул соединений в этом сервере я написал сам. Так вот может лучше взять готовое решение серверной части на java, а текущий сервер (на air) использовать только в качестве генератора картинок? Как в таком случае отправлять данные из java в flash air и получать сгенерированное изображение назад в java, чтоб отдать клиенту ?

zuxul 07.04.2013 20:16

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

caseyryan 07.04.2013 20:26

Цитата:

Так вот может лучше взять готовое решение серверной части на java, а текущий сервер (на air) использовать только в качестве генератора картинок?
Я об этом и говорил. Только вот не пойму, что за картинки и в каком формате он генерирует? Может имеет смысл и это отдать серверу на джаве? У jre все-таки возможностей гораздо больше, чем у эйр.

geor 08.04.2013 00:56

Сервак генерирует прозрачные картинки с использованием 3д движка. Все впринципе работает, устраивает. Поэтому не вижу смысла полностью переписывать под java. Все таки постараюсь выявить проблему в коде. Спасибо за помощь.

caseyryan 08.04.2013 08:31

Ну в любом случае я бы проверил для начала на возможное зацикливание сообщений. Это довольно частый баг. И потом просто на наличие бесконечного цикла, который может, при отсутствии многопоточности, повесить приложение. Мне кажется что этот вариант вполне возможен. Как раз отрабатывает 15 секундный лимит на исполнение скрипта, и работа цикла отваливается. После этого приложение начинает работать как обычно.

qweX 30.04.2013 08:55

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


Часовой пояс GMT +4, время: 10:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.