Технические решения оптимизации для серверов. Оптимизация работы оборудования

Для увеличения производительности сервера можно использовать несколько способов, но самым лучшим является оптимизация.

Оптимизация операционной системы (FreeBSD)

  • Переход на 7.х является полезным для многоядерных систем, так как можно использовать новый ULE 3.0 Scheduler и jemalloc. Если вы применяете систему legacy 6.x и она не справляется с нагрузками, то самое время произвести переход на 7.х.
  • Переход на 7.2 позволит увеличить KVA, оптимизировать по-дефолту sysctl и применять superpages. Уже готовится новый FreeBSD 8.0, который поможет значительно увеличить производительность.
  • Переход на amd64 даёт возможность увеличить объёмы KVA и Shared Mem больше 2Gb. Необходимо создать условия для развития сервера, ведь базы данных постоянно увеличиваются и требуют больших размеров.
  • Разгрузка сетевой подсистемы во FreeBSD поможет оптимизировать сервер. Этот процесс можно произвести в два этапа: тюнинг параметров ifconfig и настроек sysctl.conf/loader.conf. На этапе подготовки следует проверить возможности сетевой карты. Драйверы от Яндекса помогут увеличить скорость благодаря задействованию нескольких потоков, они часто применяются для многоядерных процессов. Для третьесортной сетевой карты лучшим решением станет polling’e. Последняя обновлённая версия тюнинга FreeBSD 7 поможет решить поставленную задачу.
  • FreeBSD и огромное количество файлов замечательно работают благодаря кешированию имён файлов в директории. Поиск по хеш-таблице поможет быстро найти необходимый файл. Хотя максимальное количество памяти около 2Мб, можно её увеличивать пока vfs.ufs.dirhash_mem это позволяет.
  • Softupdates , gjournal и mount options – это новые терабайтные винты, которые обладают прекрасной производительностью. При отключении электропитания их fsck займёт очень много времени, поэтому можно использовать softupdates или производить журналирование через gjournal.

Оптимизация фронтэнда (nginx)

Этот вид можно отнести в преждевременной оптимизации, хотя он поможет увеличить общий response time сайта. Среди стандартных оптимизаций стоит обратить внимание на reset_timedout_connection; sendfile; tcp_nopush и tcp_nodelay.

  • Accept Filters – это технология, которая даёт возможность передавать информацию от ядра к процессу в случае прихода новых данных или получения валидного http запроса. Эти фильтры помогут произвести разгрузку сервера при огромном количестве соединений.
  • Кеширование в nginx характеризуется гибкостью, и производится от fastcgi или от proxy backend’ов. Каждый сможет по-умному использовать кеширование в своём проекте.
  • AIO является очень полезным при некоторых специфичных нагрузках на сервер, ведь он сохраняет response time, в то время как уменьшается число воркеров. Новые версии nginx дают возможность использовать тандем aio с sendfile.

Оптимизация бэкэнда

  • APC – это фреймворк, который позволяет уменьшить нагрузку благодаря кешированию скомпилированного кода в ОП. APC locking стоит обновить, так как он может тормозить и вместо APC многие начинают применять eAccelerator. Стоит произвести замену locking на spinlock или pthread mutex. Значение APC hints стоит поднимать при огромном количестве.php файлов или при частом кешировании в APC user cache. APC fragmentation является признаком того, что вы применяете APC не по назначению. Он не может самостоятельно заниматься удалением записей по TTL или LRU.
  • PHP 5.3 поможет увеличить прирост производительности, поэтому стоит обновить версию PHP, хотя список deprecated функций может напугать многих.

Оптимизация базы данных

Идей по улучшению работы MySQL есть очень много в интернете, ведь каждый веб-проект рано или поздно сталкивается с ограничениями объёма памяти, диска или процессора. Поэтому простые решения не помогут справиться с проблемой, стоит уделить больше времени профайлерам (dtrace, systemtap и oprofile), а также задействовать большое количество дополнительного программного обеспечения. Необходимо не только в совершенстве уметь использовать индексы, производить их сортировку и группировку, но также знать, как это всё функционирует внутри MySQL. Также необходимо знать преимущества и недостатки разных storage engine, понимать Query cache и EXPLAIN.

Существует несколько способов оптимизации MySQL, причём даже без изменений кодов, ведь половину тюнинга сервера можно осуществлять в полуавтоматическом режиме с помощью утилит tuningprimer, mysqltuner и mysqlsla.

  • Переход на 5.1 даёт много преимуществ, среди которых стоит выделить оптимизацию оптимизатора, Partitioning, InnoDB plugin и Row based replication. Для ускорения работы сайта некоторые экстремалы уже тестируют версию 5.4.
  • Переход на InnoDB даёт много преимуществ. Он совместим с ACID, поэтому любая операция производится с помощью всего одной транзакции. Он имеет row-level locking, который даёт возможность одновременно читать и записывать много потоков изолированно друг от друга.
  • Встроенный кеш MySQL – Query Cache является достаточно сложной для понимания, поэтому многие пользователи его используют нерационально или отключают. Для него больше не означает лучше, поэтому не стоит доводить эту подсистему до максимума. Query Cache является распараллеленной, в результате при использовании больше восьми процессов она будет только тормозить весь процесс, а не способствовать уменьшению времени загрузки сайта. Содержимое этой подсистемы, которое относится к определённой таблице, аннулируется при изменениях в этой таблице. Это означает, что Query Cache даёт положительный результат только при использовании грамотно составленных таблиц.
  • Индексы могут быть вредными как для SELECT (при их отсутствии), так и для INSERT/UPDATE (при наличии лишних). Индекс, которым уже не используется, всё равно занимает память и тем самым замедляет изменения данных. Чтобы справиться с этой проблемой, стоит воспользоваться простым SQL запросом.

PostgreSQL

Система Postgres является достаточно разносторонней, ведь она относится к классу Enterprise и на ней прекрасно работает Skype, но в то же время её можно установить даже на мобильный телефон. Среди доступных 200 параметров, 45 из них являются основными и отвечают за тюнинг.

В интернете можно найти много полезной информации по тюнингу Postgres. Но некоторые статьи уже устарели, поэтому следует отталкиваться от даты публикации и обращать внимание на ту информацию, где используется ключ vacuum_mem, или в новых версиях maintenance_mem. Продвинутые программисты смогут найти много качественных трактатов, далее мы перечислим только те основы, которые помогут обычному пользователю улучшить свой проект.

  • Индексы PostgreSQL всегда на первом месте, в том время как у MySQL они занимают всегда последние позиции и это можно объяснить тем, что у PostgreSQL индексы обладают огромными возможностями. Программист должен прекрасно ориентировать в таких индексах, и знать когда и какой следует использовать, как GiST, GIN, hash и B-tree, а также partial, multicolumn и on expressions.
  • pgBouncer и его альтернативы необходимо в первую очередь устанавливать на сервер с базой данных. Без наличия пулера соединений, каждый запрос создаёт отдельный процесс, который используется оперативную память. Вроде ничего страшного, но при создании более 200 соединений даже очень мощный сервер с трудом справляется с обработкой информации. pgBouncer помогает справиться с этой проблемой.
  • pgFouine является незаменимой программой, так как её можно смело назвать аналогом mysqlsla на php. В тандеме с Playr она может осуществлять оптимизацию запросов в сложных условиях на staging серверах.

Разгрузка базы данных

Для оптимизации работы базы данных и увеличения её производительности следует как можно меньше её использовать.

  • SphinxQL можно использовать в качестве MySQL сервера. Для этого только нужно создать sphinx.conf, а также записи для indexer в cron и произвести переключение на другую базу. При этих действия даже нет необходимости изменять код. Переход на SphinxQL поможет повысить скорость и качества поиска, а также забыть о MyISAM и FTS.
  • Не-RDBMS хранилище позволяет не применять реляционную БД. Можно остановить свой выбор на Hive или Oracle. База данных key-value благодаря своей скорости применяет выборки из реляционных баз для дальнейшего кеширования. Владельцы крупных проектов на PHP, могут использовать отличную возможность opcode cache для хранения всех custom данных. С его помощью можно надёжно сохранить даже перемены глобального значения, ведь они занимают мало места и практически не занимают память, а также скорость выборки значительно повыситься. Если для большого проекта блок глобальных перемен записать только на одну машину, то трафик вырастает, и она начинает сильно тормозить. Для решения этой проблемы необходимо хранить глобальные переменные в opcode cacher’e или произвести клонирование переменных по всем серверам и в алгоритме consistency hashing прописать исключения.
  • Кодировки относятся к действенным методам разгрузки базы данных. Стоит отметить, UTF-8 – это прекрасный выбор, но на русском языке она занимает очень много места, поэтому для одноязычного контингента сначала следует подумать о рациональном использовании кодировки.
  • Асинхронность поможет уменьшить время реакции приложения или сайта, а также существенно понизить нагрузку на сам сервер. Batch запросы производятся намного быстрее, чем привычные одиночные. Для огромных проектов можно использовать сообщения RabbitMQ, ApacheMQ или ZeroMQ, а для малых можно задействовать всего лишь cron.

Дополнительные приложения для проведения оптимизации

  • SSHGuard или его альтернатива является стандартной практикой для ssh. Анти-брутфорсы помогают создать надёжную защиту сервера от нападок ботов.
  • Xtrabackup от Percona – это прекрасный инструмент для бэкапа MySQL, который обладает большим количеством настроек. Но идеальным решением всё же стоит назвать клоны в ZFS, ведь они создаются очень быстро, а чтобы произвести восстановление БД, достаточно изменить пути к файлам в конфигурации мускула. Клоны позволяют произвести восстановление системы с нуля.
  • Перенос почты на другой хост позволит спасти трафик и IOPs, если ваш сервер просто засыпают спамами.
  • Интеграция со сторонним программным обеспечением поможет произвести оптимизацию mysql сервера. Например, для обмена сообщениями можно использовать связку smtp/imap, которая не займёт много памяти. Для создания чата достаточно использовать основу jabber сервера с javascript клиентом. Эти системы, которые созданы на основе адаптеров к готовым продуктам, отличаются прекрасной возможностью масштабирования.
  • Мониторинг – это очень важная составная часть, ведь невозможно осуществлять оптимизацию чего-либо без детального анализа. Необходимо следить за метриками производительности, свободными ресурсами и задержками, в этом поможет Zabbix, Cacti, Nagios и другие инструменты. Web Performance Test позволяет вычислить скорость загрузки сайта или проекта, поэтому очень помогает при мониторинге. При настройке performance сервера, помните, что только тщательный анализ поможет устранить все возникшие проблемы и произвести оптимизацию.

Не поняли половины из написанного — не беда.

Эффективному SEO может помешать всего лишь одна досадная ошибка в технической оптимизации сайта, но это приведет к тому, что роботы ПС не смогут правильно индексировать ресурс, понять структуру сайта, а пользователи не найдут необходимую для них информацию. Все это, в свою очередь, приведет к низкому ранжированию сайта.

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

5 основных параметров технической оптимизации

1. Файл robots.txt

Важно отметить, что файл robots.txt должен содержаться в корневой директории каждого ресурса. Это первый файл, к которому обращаются роботы ПС, когда заходят на сайт, и в котором хранятся инструкции для них.

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

Проверить файл можно в сервисе Яндекс.Вебмастер , пункт меню «Анализ robots.txt» (https://webmaster.yandex.ru/robots.xml).

2. Sitemap - карта сайта

Карта сайта - одна из страниц ресурса, информация на которой аналогична содержанию обычной книги. Эта страница используется как элемент навигации. В карте сайта содержится полный перечень разделов и/или всех страниц, размещенных на ресурсе.

HTML-карта сайта нужна пользователям для быстрого и удобного поиска информации, а XML - поисковикам для улучшения индексации сайта.

С помощью карты сайта поисковые роботы видят всю структуру и быстрее индексируют новые страницы.

Проверка карты сайта (https://webmaster.yandex.ru/sitemaptest.xml)

Пример корректной карты сайта в формате.html:

3. Редиректы (перенаправления)

Редирект применяют для перенаправления посетителей ресурса с одной страницы на другую. Примеров, для чего нужны редиректы, достаточно много:

  1. Смена доменного имени сайта.
  2. Переклейка зеркал. У многих сайтов не настроен 301 редирект с домена, который содержит www в адресе, на домен без www, или наоборот.

Проставлять редиректы необходимо в файле.htaccess. Так как поисковые системы site.ru и www.site.ru могут считать разными сайтами, то в выдачу могут попадать дубли. Это создаст сложности с ранжированием в выдаче и т. д.

Основные статус-коды редиректов:

  • 300 - Multiple Choices (несколько вариантов на выбор);
  • 301 - Moved Permanently (перемещено навсегда);
  • 302 - Temporary Redirect (временный редирект);
  • 303 - See Other (затребованный ресурс можно найти по др. адресу);
  • 304 - Not Modified (содержимое не изменялось - это могут быть рисунки, таблицы стилей и т. п.);
  • 305 - Use Proxy (доступ должен осуществляться через прокси);
  • 306 - Unused (не используется).

Полезный сервис для определения откликов страниц: http://www.bertal.ru/

4. Настройка видов URL-страницы

Важно проверить сайт на единообразие адреса всех его страниц. Например, на всем сайте страницы должны иметь закрывающий слеш: http://site.ru/katalog/ и http://site.ru/products/ . Если часть страниц имеет вид http://site.ru/katalog , а часть - http://site.ru/products/ это неверно.

Проверить адреса внутренних страниц ресурса на ошибки будет удобно после создания карты сайта.

5. Ошибки сайта

Во время загрузки любой страницы сайта посылается запрос серверу, который отвечает кодом статуса HTTP и загружает (или не загружает) страницу.

Основные статус-коды:

  • 200 - со страницей все в порядке;
  • 404 - несуществующая страница;
  • 503 - сервер временно недоступен.

«404 ошибка» - один из наиболее важных технических параметров оптимизации, по которому обязательно следует проводить доработку.

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

Проверить коды статусов можно с помощью http://www.bertal.ru/ или Яндекс.Вебмастера.

Мы рассмотрели только основные параметры технической доработки сайта, на которые нужно обращать внимание в первую очередь. Если Вы обнаружите подобные ошибки на своем сайте или возникнут сложности с их устранением, обращайтесь только в профессиональную SEO-компанию.

Оптимизация инфраструктуры баз данных и виртуальных сред

Повысьте производительность инфраструктуры баз данных в текущем состоянии и получите рекомендации по дальнейшей оптимизации с помощью облачных сервисов.

Проект Server Optimization актуален в случаях:

  • отсутствия централизованной системы хранения и восстановления данных;
  • проблем с производительностью SQL-серверов;
  • проблем в работе приложений;
  • отсутствия системы обеспечения отказоустойчивости дата-центра;
  • оценки готовности и целесообразности миграции ИТ-инфраструктуры в облака;
  • отсутствия общего понимания состояния инфраструктуры баз данных и виртуальной среды.
    Управляйте серверной средой эффективнее:
    Технический аудит инфраструктуры баз данных SQL
    Обнаружение проблем настройки серверов «Тонкая» настройка SQL-сервера – непростая задача даже для администратора баз данных с достаточным опытом работы. Мы проведем исчерпывающий анализ настроек системного уровня, таких как настройки памяти по умолчанию, партиционирование, параллельные сессии, кэширование, диски, настройки резервного копирования и др.

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

    Оптимизация производительности баз данных У каждого разработчика баз данных существуют свои рекомендации по оптимизации производительности сервера или кластера. Специалисты нашей компании выполняли различные варианты настройки базы данных под разные типы нагрузки и могут предложить оптимальные настройки производительности. Эти рекомендации всегда подкреплены ссылками на документацию и передовой опыт вендоров по развертыванию ПО.

    Анализ логов ошибок и обнаружение критических проблем Логи ошибок – основной источник информации о работе базы и проблемах в приложениях, использующих эту базу. Нашими специалистами разработан собственный инструментарий для анализа проблем и поиска методов их устранения. Как правило, любой проект обязательно содержит анализ логов серверов БД, на основе чего даются рекомендации по оптимизации. 

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

    Создание отказоустойчивой архитектуры Разработка архитектуры базы с режимом работы 24x7 с временем простоя не более 2 часов в год предполагает увеличение количества серверов, детальную проработку программной части и исключение единой точки отказа. Мы поможем решить подобную задачу, а кроме того, вы получите политику резервного копирования и восстановления как исполняемого кода БД, так и всех данных.

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

    Оптимизация баз данных для работы с конкретными приложениями Мы проводим оптимизацию и настройку базы данных MS SQL и Oracle для работы бизнес-приложений, таких как системы управления документооборотом, системы управленческого учета, портальные решения и др. При выполнении работ мы руководствуемся рекомендациями поставщиков программного обеспечения по настройке ПО, а также собственным опытом оптимизации БД под различные виды пользовательской нагрузки.

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

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

    Получите точный расчёт проекта у наших или узнайте, как провести обследование без затрат с вашей стороны при поддержке вендора.

  •