Websockets проблемы с памятью.
Всем здравствуйте!
Вот необходимо мне для проекта использовать websockets. Реализую я доступ к ним с помощью dojo, серверный язык - php 5.3.5... apache 2.2.20 Сначала вроде бы все работает нормально. Но если подержать приложение часок другой включенным, то можно заметить, что занят большой объем оперативной памяти именно этим процессом (смотрю по монитору ресурсов). И эта память продолжает угрожающе расти. Из-за чего это происходит и можно ли от этого как-нибудь избавиться? Заранее спасибо! |
попробуйте оптимизировать код
|
luxor1992,
на сервере или в клиенте растёт память? |
В общем по всякому тестировал, убирал то одни, то другие куски,
выяснил, что утечка происходит на клиенте и, скорее всего, не из-за вебсокетов, точнее вебсокеты могут только ухудшать утечку, но не являться главной её причиной. |
Выяснил, что утечку вызывают вовсе не вебсокеты,
а метод 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); Данные массива тестовые, не обращайте внимания. |
luxor1992,
На интервал таймера посмотрели бы хоть. Самая явная проблема. |
Может я чего не понимаю, но причем здесь интервал? Ну пусть будет 100.
Память будет заполняться просто медленнее, но так же верно и неотвратимо. Я поставил 1, чтобы эффект быстрее был виден. Чтобы ради тестирования не приходилось по полчаса сидеть перед монитором, чтобы наконец убедиться, что memory leak присутствует. На других форумах/сайтах речь идет вообще о неправильной реализации render() в 1.7 например, вот здесь: http://bugs.dojotoolkit.org/ticket/14589 |
luxor1992,
Здесь нет экстрасенсов, что бы узнать, что находится в тех функциях которые могут утекать. Если вы знаете причину, можете попробовать устранить её, всем будет полезно. |
Эти функции находятся в общем доступе на оф. сайте dojo.
В общем, неважно, попробую решить проблему сам. Но буду рад, если есть еще какие-нибудь соображения по этому поводу! |
Часовой пояс GMT +3, время: 18:02. |