klink0v (klink0v) wrote,
klink0v
klink0v

Categories:

Что делать если тормозит Mozilla FireFox?

Если верить Яндекс.Метрике, то по фразе "тормозит Mozilla Firefox" с поисковых систем в мой блог приходит довольно много народа. А я им как-то пользуюсь уже много лет, и это мой любимый браузер. Почему - объяснил в свое время здесь. И что он как-то медленно работает, я особо не замечаю. И вряд ли причина кроется в одной только привычке.

[Читать дальше]

Сперва немного теории. Во-первых, тормоза тормозам рознь. Когда человек говорит, что у него "медленно работает браузер", стоит сразу уточнить: он медленно запускается, медленно загружает странички, медленно переключается между окнами, медленно выполняет скрипты, медленно отрисовывает анимацию или что-то ещё? У каждого из этих симптомов могут быть свои собственные независимые причины.

Во-вторых, браузер, как и все остальные программы, выполняется на вполне себе конкретном железе и потребляет определенные ресурсы. Соответственно, недостаток таких ресурсов приведет к неудовлетворительной работе FireFox-а. Под словом "ресурсы" я понимаю: объем оперативной памяти, тактовую частоту и кеш процессора, скорость и отзывчивость жесткого диска, пропускная способность сети и отклик от DNS-серверов.

Но необязательно сразу бежать в магазин за более "крутым" новым компьютером. В ряде случаев вполне возможно оптимизировать работу имеющегося железа и операционной системе таким образом, что лисичка станет шевелиться в разы шустрее. Итак, где же могут скрываться узкие места и как их можно расшить?

1. Не хватает оперативной памяти

Это вполне распространенная ситуация, особенно на не слишком современных машинах. Если нет возможности установить больше оперативки, то остается только "уговорить" огнелиса слегка поумерить свои аппетиты. Как? В первую очередь, отключить все не слишком нужные плагины. Каждое расширение в момент запуска браузера загружается в память. Чем больше расширений, тем больше памяти расходуется. Пройдите по своему списку плагинов и три раза подумайте над каждым из них: а нужен ли он вам реально? Если какие-то вы пользуете не каждый день, а от случая к случаю, то разумно будет временно отключить не сильно нужные. Также можно создать несколько разных профилей с разным набором плагинов для решения тех или иных задач.

Далее, в переменных самой лисы, которые прячутся на странице настроек "about:config", есть такой параметр "browser.sessionhistory.max_entries". Его значение задает количество URL-ов, которые FireFox будет держать в оперативной памяти на случай, если вы будете бодро тыкать по кнопочкам "назад" и "вперёд". Чтобы можно было вам их быстренько показать сразу из памяти, а не загружать каждый раз из журналов. Всё было бы ничего, но по умолчанию, "из коробки", он равен 50-ти. Это маленько многовато, на мой взгляд вполне хватит и 5-ти. Таким образом, можно сэкономить немного памяти. Ещё можно подкрутить "browser.sessionhistory.max_total_viewers", это количество уже "отпарсенных" страниц, которые лис держит в памяти. По умолчанию это значение, как правило, равно восьми. Его тоже можно немного уменьшить.

Также стоит помнить, что каждая открытая вкладка и каждое новое окно также неизбежно "отъедают" память. Отсюда следует мораль: одновременно открывать поменьше вкладок и окон. Если у вас 4 гигабайта оперативки, вы без проблем сможете открывать по 20 вкладок, как я. А вот если всего 1 гигабайт, то это уже будет непозволительной роскошью.

2. Проблемы с сетью

Как правило, все проблемы с сетью сводятся либо к жестоким потерям пакетов (packetloss), либо к косякам в работе DNS. Например, я был премного удивлен, когда узнал что мой провайдер (Infoline) зачем-то ограничивает количество запросов к своим DNS-серверам до 10-ти штук в секунду. Мне их системный администратор "объяснил", что они таким образом "защищаются от DoS-атак". Ну молодцы, что защищаетесь. Только вот нормально работать вполне себе честным и законопослушным пользователям тоже становится невозможно.

К сожалению, самостоятельно решить проблемы с сетью обычно бывает весьма затруднительно. Или приходится выносить мозг техподдержке провайдера, для чего требуются серьезные технические знания, либо и вовсе менять этого самого провайдера на другого. Тем не менее, есть три случая, которые можно разрулить и самостоятельно.

а) Бывают провайдеры со "сломанным" ipv6. То есть вроде как ipv6-адрес и маршрут в мир они вам выдают, а реально пакеты там не ходят. В этом случае браузер сперва предпринимает попытку соединиться с сервером по ipv6, получает отлуп по таймауту, и только потом идет по ipv4. У пользователя создается ощущение, что он работает "безумно долго". Выход: отключить протокол ipv6 как в настройках сети операционной системы, так и в самом браузере. В FireFox-е за это отвечает параметр "network.dns.disableIPv6", его надо установить в значение "true".

б) Бывают провайдеры с кривыми DNS-серверами, типа того что у меня самого. Выход - использовать бесплатные публичные DNS-сервера имени Google. То есть в настройках сети прописать в качестве DNS адреса "8.8.8.8" и "8.8.4.4".

в) Применительно конкретно к гуглу часто всплывает проблема с MTU. То есть почему-то, сам не знаю почему, в отдельных случаях пакеты с MTU=1500 туда не проходят, а механизм MTU Path Discovery, опять же, по неизвестным причинам не срабатывает. Так что если у вас тупит, например, только отдельно взятый гугловский сервис поиска по картинкам, то вполне может помочь уменьшить MTU на сетевом интерфейсе, скажем, байтов на 20 (подбирается в каждом конкретном случае опытным путём). Впрочем, такое чаще встречается под Linux-ом, из винды я с таким почти ни разу не сталкивался.

3. Не хватает мощности процессора

Тут что-то поделать сложнее всего. Не секрет, что с каждым годом веб-сайты всё махровее зарастают JavaScript-ом и Flash-баннерами. Отдельно доставляет, когда какой-нибудь альтернативно одарённый уёб-дизигнер воткнет на свою страничку что-нибудь бегающее-мерцающее-летающее по всему экрану. Как вариант, можно установить плагин "NoScript", который будет срезать всё лишнее динамическое содержимое. Между прочим, это заодно ощутимо повысит и безопасность сёрфинга, снизит риск случайно хватнуть какого троянца.

4. Браузер упирается в производительность жесткого диска

Вот это самый интересный пункт. Чтобы лучше понять что и в каком месте можно "крутить", надо понимать что FireFox в принципе хочет хранить на диске. А это ни много ни мало:

  • профиль пользователя;
  • кеш;
  • база данных последних посещенных сайтов, журналы, cookies, сессии и прочее;
  • база данных вредоносных сайтов.

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

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

Остюда следует мораль номер раз: купить SSD-диск и перенести профиль FireFox-а на него. SSD-дискам пофиг на фрагментацию, у них скорость случайного чтения ничем не уступает скорости последовательного (линейного) чтения. Но допустим, что жаба душит, а комфортно работать хочется. Выход есть: на уже имеющемся жестком диске создать отдельный раздел (partition) небольшого размера. Такого, чтобы на него помещался только чётко профиль вместе с кешом (cache). Ну и перенести это всё на него, разумеется. После чего не забывать регулярно дефрагментировать всё это безобразие (скажем, раз в квартал) либо специальными программами, либо встроенными в Windows утилитами.

Мораль номер два: к тормозам часто приводит активность антивирусных программ. Если у них в настройках значится "проверять всё подряд", то каждый раз при обращении браузера к собственному кешу и профилю, содержащиеся в них файлы будут проверяться на вирусы. С одной стороны, это вроде бы и неплохо. С другой стороны, быстродействие будет неизбежно страдать. Что же делать? На самом деле, в большинстве случаев можно совершенно спокойно отключить антвирусную проверку кеша браузера. Почему? Да потому что практически все современные антивирусы проверяют HTTP протокол "на лету". И если браузер запросит какой-то вредоносный скрипт, то антивирусник заблокирует его задолго до того, как оный зловред попадёт в кеш. Соответственно, зачем проделывать лишнюю работу и заставлять компьютер проверять на вирусы одно и то же по нескольку раз? Быстрее работать он от этого точно не станет. Да, при этом возникает опасность подцепить что-нибудь нехорошее по протоколу HTTPS, который не сканируется антивирусами. Но тут уж должен возобладать здравый смысл самого пользователя. Придется следить за этим самостоятельно и не заходить по HTTPS на всякие подозрительные "левые" сайты.

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

Мораль номер четыре. Если у вас очень много свободной оперативной памяти, то в FireFox-е есть штатная техническая возможность вообще вынести кэш с диска в оперативку, в том числе и без использования RAM-дисков. Способ описан, например, здесь. Для этого нужно подкрутить параметры "browser.cache.disk.enable", "browser.cache.memory.enable" и "browser.cache.memory.capacity". Правда, там тоже есть некоторые подводные камни. Поэтому данный метод следует использовать с большой осторожностью и только в том случае, если чётко представляешь  себе что и зачем ты творишь. Плюс к тому, до 4-ой версии FireFox не умел одновременно использовать и дисковый кеш, и кеш в памяти. У разработчиков были планы реализовать такую возможность. Так что мне самому интересно, запилили они таки эту фичу али нет.

Мораль номер пять. FireFox использует для своей работы бесплатный движок баз данных под названием "SQLite". Особенностью данной СУБД является потребность в периодическом "вакуумировании", то есть физическом очищении файлов от помеченных к удалению данных. Проще всего вакуумировать базы данных установив один из предназначенных для этого плагинов: раз, дватри (используйте любой на свой вкус). Последний до кучи умеет заодно и перестраивать индексы (это типа круто). Если же этого не делать, то со временем файлы баз данных разрастутся до нескольких сотен мегабайт, займут лишнее место на диске, да и FireFox будет хуже ворочаться, особенно при запуске.

***

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



Ретранслировано из Я.ру
Subscribe

  • ОколоITшный дыбр #99

    ... Попался прошлогодний боян. Как-то прошел мимо меня, но всё равно смешно. ... Кстати, насчет боянов. Яндекс.Музыка подогнала. Песня родом из…

  • Бессвязного дыбра псто #89

    ... Как там бишь пел Визбор? "Вот и закончился отпуск, на работу пора"? Эх... Ещё две бездарно профаканные недели... Столько всего…

  • Ещё про походные роутеры

    Ещё гуглил энное время на тему "портативно-походных" роутеров и всего что с ними связано. Сперва некоторое количество голых фактов, потом…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments