Память веб-браузера на Raspberry Pi

Я использую Raspberry Pi для отображения информации, собранной с некоторого автоматизированного оборудования в промышленной среде. Данные собираются и хранятся в базе данных на промышленном ПК; У меня есть Pi, подключенный к нему через проводную сеть, и я использую PHP для извлечения данных из базы данных и их отображения.

Проблема, с которой я столкнулся, связана с памятью. Сейчас я запускаю только тест, извлекаю таблицу с одной записью и тремя столбцами и отображаю ее на веб-странице, а также использую header("Refresh: 2; URL=$_SERVER['REQUEST_URI']"); для обновления информации. Получив несколько раз страницу Dead Jim в Chromium, я начал отслеживать память с помощью vmstat, чтобы увидеть, как быстро она расходуется. Хром кушает около 5,4 Мб в минуту, а Мидори 4,8 Мб в минуту.

Это процесс, который должен работать 24 часа в сутки, 7 дней в неделю, с перезагрузкой, возможно, раз в неделю, когда промышленное оборудование выходит из строя на техническое обслуживание. Что я могу сделать, чтобы помочь с использованием памяти? Есть ли какая-то настройка браузера, чтобы предотвратить кэширование чего-либо, что может помочь? Есть ли лучший браузер, который мне следует использовать? Я видел такие проблемы повсюду на досках объявлений в Интернете, поэтому я не думаю, что это делает мой php-код, хотя я подниму его, если кто-то думает, что это может быть проблемой.


person NickGlowsinDark    schedule 09.05.2014    source источник
comment
Значит, браузеры никогда не освобождают свою память?   -  person Halcyon    schedule 09.05.2014
comment
Я не очень понимаю, что там происходит. Я использую vmstat для наблюдения за памятью, и свободная память просто уменьшается, пока не достигнет 8,2 МБ. Затем он сидит там около пяти минут (в то время как обновление моей веб-страницы занимает 30 или 40 секунд), пока внезапно что-то не меняется. Мой файл подкачки (который был около 102 МБ) уменьшился до 32 МБ, а мой свободный резервный файл увеличился до 178 МБ. В течение следующих получаса или около того все работает нормально, пока свободное место не уменьшится до 8 МБ. Стирать, полоскать, повторять.   -  person NickGlowsinDark    schedule 15.05.2014
comment
Что, если вместо этого вы получите обновления с помощью ajax, вы получите такое же поведение? В этих обновлениях может быть что-то, из-за чего Chrome потребляет так много памяти.   -  person Halcyon    schedule 15.05.2014
comment
Попробуйте отключить JavaScript в Chromium или Midori и посмотрите, повторяется ли проблема. Возможно, вы сможете обойтись без этого на своем веб-сайте, и браузеру потребуется на одну вещь меньше резервировать память.   -  person halfer    schedule 16.05.2014


Ответы (2)


Похоже, вы заставляете браузер обновлять страницу после фиксированной задержки независимо от того, смогла ли ваша малина (веб-сервер) создать новую страницу и завершить процесс или нет. У меня также были ситуации, когда мой браузер показывал пустую страницу, делая подобные вещи. Мое решение для этого состояло в том, чтобы просто синхронизировать оба. Что значит

  1. Браузер запрашивает данные с вашего веб-сервера
  2. сервер создает данные и отправляет их в браузер
  3. Браузер, ожидающий данных, обновляет свое отображение и задерживает некоторое время или немедленно создает новый запрос.

Насколько я знаю, это типичный сценарий и вариант использования AJAX.

person tswaehn    schedule 09.05.2014
comment
Я действительно надеялся избежать этого таким образом; просто пытаюсь сделать все супер-простым, так как я, по сути, единственный программист в моей компании, который понимает любой вид веб-программирования (у всех остальных есть набор навыков, больше похожий на ПЛК / лестничную логику), но это определенно было единственный способ уберечь все от краха. Примерно через 20 часов его запуска с использованием метода XMLHTTPRequest у меня осталось 17% памяти, но похоже, что он освобождает память так, как должен сейчас. - person NickGlowsinDark; 29.07.2014
comment
Вы можете написать мне письмо, если вам нужна поддержка :-) - person tswaehn; 30.07.2014

Я столкнулся с аналогичной проблемой с моим raspberry pi, использующим хром. Я держу веб-страницу открытой и обновляю ее через разные промежутки времени, только браузер не обновляет мои показатели. После загрузки с отключением этого флага проблема была решена. Подумайте о том, чтобы попробовать это.

В режиме киоска при автозапуске я перевернул этот флаг: --disable-gpu-program-cache

Дополнительную документацию можно найти здесь: http://www.chromium.org/developers/design-documents< /а>

person John    schedule 27.03.2015