Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.02.2012, 00:52
Новичок на форуме
Отправить личное сообщение для luxor1992 Посмотреть профиль Найти все сообщения от luxor1992
 
Регистрация: 14.02.2012
Сообщений: 9

Websockets проблемы с памятью.
Всем здравствуйте!

Вот необходимо мне для проекта использовать websockets. Реализую я доступ к ним с помощью dojo, серверный язык - php 5.3.5... apache 2.2.20

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

Из-за чего это происходит и можно ли от этого как-нибудь избавиться?

Заранее спасибо!

Последний раз редактировалось luxor1992, 24.02.2012 в 01:59.
Ответить с цитированием
  #2 (permalink)  
Старый 24.02.2012, 10:36
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

попробуйте оптимизировать код
Ответить с цитированием
  #3 (permalink)  
Старый 24.02.2012, 12:21
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

luxor1992,
на сервере или в клиенте растёт память?
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #4 (permalink)  
Старый 24.02.2012, 18:19
Новичок на форуме
Отправить личное сообщение для luxor1992 Посмотреть профиль Найти все сообщения от luxor1992
 
Регистрация: 14.02.2012
Сообщений: 9

В общем по всякому тестировал, убирал то одни, то другие куски,
выяснил, что утечка происходит на клиенте и, скорее всего, не из-за вебсокетов, точнее вебсокеты могут только ухудшать утечку, но не являться главной её причиной.
Ответить с цитированием
  #5 (permalink)  
Старый 25.02.2012, 11:17
Новичок на форуме
Отправить личное сообщение для luxor1992 Посмотреть профиль Найти все сообщения от luxor1992
 
Регистрация: 14.02.2012
Сообщений: 9

Выяснил, что утечку вызывают вовсе не вебсокеты,
а метод updateSeries и render диаграммы, которую я обновляю "онлайн".

можете что-нибудь подсказать? Это ошибка в реализации updateSeries или моя лажа?

setInterval(function repetition() {

newData1 = 10000;

for (var i = 0; i < dataLineChart.length - 1; i++) {
dataLineChart[i] = dataLineChart[i+1];
}

dataLineChart[dataLineChart.length - 1] = newData1;

lineChart.updateSeries("Line", dataLineChart);
lineChart.render();

newData2[0] = 2000; newData2[1] = 3000; newData2[2] = 6000; newData2[3] = 10000;

for (var i = 0; i < dataLineChart.length; i++) {
dataBarChart[i] = newData2[i];
}

barChart.updateSeries("Bar", dataBarChart);
barChart.render();
}, 1);

Данные массива тестовые, не обращайте внимания.
Ответить с цитированием
  #6 (permalink)  
Старый 25.02.2012, 13:13
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

luxor1992,
На интервал таймера посмотрели бы хоть. Самая явная проблема.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 25.02.2012, 13:38
Новичок на форуме
Отправить личное сообщение для luxor1992 Посмотреть профиль Найти все сообщения от luxor1992
 
Регистрация: 14.02.2012
Сообщений: 9

Может я чего не понимаю, но причем здесь интервал? Ну пусть будет 100.
Память будет заполняться просто медленнее, но так же верно и неотвратимо.

Я поставил 1, чтобы эффект быстрее был виден. Чтобы ради тестирования не приходилось по полчаса сидеть перед монитором, чтобы наконец убедиться, что memory leak присутствует.

На других форумах/сайтах речь идет вообще о неправильной реализации render() в 1.7
например, вот здесь: http://bugs.dojotoolkit.org/ticket/14589
Ответить с цитированием
  #8 (permalink)  
Старый 25.02.2012, 13:58
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

luxor1992,
Здесь нет экстрасенсов, что бы узнать, что находится в тех функциях которые могут утекать. Если вы знаете причину, можете попробовать устранить её, всем будет полезно.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #9 (permalink)  
Старый 25.02.2012, 14:03
Новичок на форуме
Отправить личное сообщение для luxor1992 Посмотреть профиль Найти все сообщения от luxor1992
 
Регистрация: 14.02.2012
Сообщений: 9

Эти функции находятся в общем доступе на оф. сайте dojo.

В общем, неважно, попробую решить проблему сам.

Но буду рад, если есть еще какие-нибудь соображения по этому поводу!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение проблемы с отображением элементов на странице mozyr Javascript под браузер 17 13.01.2012 02:34
Проблемы с анимацией vyazovetskova Общие вопросы Javascript 111 26.12.2010 15:27
Проблемы с картой изображений mmolib Events/DOM/Window 0 06.12.2010 20:34
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Drug&Drop + всплывание события = проблемы =(( _NoName_ Events/DOM/Window 4 05.03.2009 17:47