Как известно, nginx очень продуктивный веб-сервер, но всё же его тоже можно ускорить. Я облазил интернет и решил все советы собрать в одном месте.
Читать полностью »
Рубрика «highload» - 16
Оптимизация nginx
2014-06-05 в 9:43, admin, рубрики: highload, nginx, оптимизация, Серверная оптимизация, Серверное администрированиеPHP + Java, или In-memory кластер теперь и для PHP разработчиков
2014-05-26 в 7:59, admin, рубрики: caching, cluster, highload, in-memory-data-grid, open source, php, высокая производительность, кеширование, кластер, кэшированиеIntro
PHP + Java. Картинка взята отсюда
В этом комментарии к статье под названием «Пишите код каждый день» я сказал, что скоро покажу свой проект, на который я выделял ежедневно 1 час (кроме выходных). Так как в последнее время моя работа связана с написанием распределенных Java приложений, которые используют in-memory data grid (IMDG) в качестве хранилища данных, то мой проект связан именно с этим.
Подробнее про IMDG можно почитать в моих предыдущих статьях (1, 2). Но если кратко, то это кластерное распределенное хранилище объектов по ключам, которое держит все данные в памяти, за счет чего достигается высокая скорость доступа к данным. Позволяет не только хранить, но и обрабатывать данные, не извлекая их из кластера.
И если интерфейс для обработки данных у каждого конкретного IMDG свой, то интерфейс доступа к данным обычно идентичен хеш-таблице.
О чем эта статья
Большинство IMDG написано на Java и поддерживают API для Java, C++, C#, при этом API для веб языков программирования (Python, Ruby, PHP) не поддерживается, а протокол для написания клиентов сильно ограничен. Именно этот факт я и считаю основным тормозом для проникновения IMDG в массы — отсутствие поддержки самых массовых языков.
Так как производители IMDG пока не предоставляют поддержку веб языков, то веб программисты не имеют возможностей по такому же легкому масштабированию приложений, какие есть у серверных Java разработчиков. Поэтому я решил сделать нечто подобное самостоятельно и выложить в open source, взяв в качестве движка open source IMDG JBoss Infinispan (компания JBoss, принадлежащая Red Hat, довольно хорошо известна в кругу java разработчиков). Мой проект называется Sproot Grid, пока доступен только для PHP, но если у сообщества будет интерес, то сделаю и интеграцию с Ruby и Python.
В этой статье я еще раз расскажу про in-memory data grid и про то, как конфигурировать, запускать и использовать Sproot Grid.
Читать полностью »
PRFRL — как устроен интерфейс аналитики
2014-05-15 в 17:16, admin, рубрики: highload, newrelic, php, pinba, xdebug, Блог компании PRFLR, производительность, метки: highload, newrelic, pinba, xdebug, производительностьВ этом посте хотелось бы рассказать больше про концепцию панели аналитики. Собственно именно она дает разработчикам уникальные возможности для поиска проблемных по производительности мест в коде.
PRFLR — это система аналитики, направленная на скорейшее обнаружения проблемных по производительности мест в работе приложений. Realtime и непосредственно на Production серверах.
В первую очередь PRFLR ориентирован на высоконагруженные серверные приложения работающие на больших кластерах, однако применим для небольших проектов, десктоп и мобильных приложений. Конечно если вас действительно волнует вопрос их быстродействия.
Начинаем работать с графовой базой данных Neo4j
2014-04-16 в 10:51, admin, рубрики: highload, neo4j, php, метки: highload, neo4j, PHPВ нашем проекте возникла следующая задача — есть база с большим количеством товаров, на уровне сотен тысяч. У каждого товара есть сотни динамически создаваемых характеристик. Необходимо обеспечить быструю фильтрацию по товарам по набору различных характеристик. Время формирования ответа должно быть не более 0.3 секунды, нужно поддерживать сложную логику в стиле.
(характеристика1 = true AND (характеристика2 < 100)) OR (характеристика1 = false AND (характеристика3 > 17)) ... далее обычно мешанина из ANDOR
Типичный пример подобного функционала — hotline.ua/computer/myshi-klaviatury/
У нас все реализовано в рамках MySQL + Symfony2/Doctrine, скорость неудовлетворительная — ответы формируются в течении 1-10 секунд. Мои попытки оптимизировать все это хозяйство — под катом.
Читать полностью »
Мифы и легенды про Big Data
2014-04-09 в 5:25, admin, рубрики: big data, highload, java, аналитика, Блог компании ВымпелКом (Билайн), реляционные базы данных, телефония, метки: big data, highload, java, аналитика, реляционные базы данных
Один из наших кластеров для пилотных задач (Data node: 18 servers /2 CPUs, 12 Cores, 64GB RAM/, 12 Disks, 3 TB, SATA — HP DL380g)
— Что такое Big Data вообще?
Все знают, что это обработка огромных массивов данных. Но, например, работа с Oracle-базой на 20 Гигабайт или 4 Петабайта — это ещё не Big Data, это просто highload-БД.
— Так в чём ключевое отличие Big Data от «обычных» highload-систем?
В возможности строить гибкие запросы. Реляционная база данных, в силу своей архитектуры, предназначена для коротких быстрых запросов, идущих однотипным потоком. Если вы вдруг решите выйти за пределы таких запросов и собрать новый сложный, то базу придётся переписывать – или же она умрёт под нагрузкой.
— Откуда берётся эта новая нагрузка?
Если чуть углубиться в архитектуру, то можно увидеть, что традиционные базы данных хранят информацию очень дисперсионно. Например, у нас номер абонента может быть на одном сервере в одной таблице, а его баланс — в другой таблице. Быстродействие требует максимального разбиения данных. Как только мы начинаем делать сложные join'ы, производительность резко падает. Читать полностью »
Один год из жизни проекта Ответы@Mail.ru
2014-03-07 в 10:16, admin, рубрики: hardware, high performance, highload, Блог компании Mail.Ru Group, высокая производительность, ит-инфраструктура, метки: hardware, high performance, highload
В данной статье я постараюсь вспомнить и описать все сложности и подводные камни, которые встречались на пути реализации задач, связанных с проектом Ответы, также расскажу и про архитектуру проекта.
Все началось с того, что мой контракт подошел к концу (в течение года я участвовал в работе над почтой Mail.ru). «Снова меня ждут приключения», — пронеслось в мыслях, — «новая страна, новая работа». Я пошел к своему начальству и в ходе обсуждений все-таки получил порцию приключений в виде интересной задачки — заняться проектом Ответы.Читать полностью »
PHP и различные виды NoSQL
2014-03-04 в 15:29, admin, рубрики: BigTable, highload, key-value storage, nosql, php, высокая производительность, метки: BigTable, highload, key-value storage, PHP
В последнее время набирают популярность различные NoSQL базы данных. Эта статья начиналась как изучение особенностей графитовой графовой базы данных Neo4j. Но, в процессе подбора информации, мне захотелось систематизировать информацию о NoSQL решениях и о графовых базах данных, в частности.
В ходе этого небольшого исследования, были выбраны для подробного рассмотрения СУБД, успешно применяющиеся в области Web. И, поскольку в тегах присутствует «PHP», я выбирал СУБД, которые уже можно использовать с этим языком.
Magento Enterprise: Что такое Full Page Cache и почему он нужен
2014-03-03 в 11:33, admin, рубрики: cms, ecommerce, FPC, highload, Magento, magento ecommerce, Magento Enterprise, open source, php, Веб-разработка, кеширование, оптимизация, электронная коммерция, метки: cms, ecommerce, FPC, highload, Magento, magento ecommerce, Magento Enterprise, open source, PHP, Веб-разработка, кеширование, оптимизация, электронная коммерция
Magento Enterprise: Что такое Full Page Cache и почему он нужен.
Для тех, кто знаком с Magento, не секрет, что этот e-commerce движок довольно требователен к железу. Но разработчики этого интернет-магазина попытались решить эту проблему и придумали много различного рода «ускорялок», без которых, пожалуй, запускать магазин на движке Magento в продакшн не стоит. Слишком долго Magento будет отдавать конечному пользователю страницу. Среди таких «ускорялок» кеши, индексы, компиляция, объединение JS/CSS в один сжатый файл и др.
Одной из основных «фишек» Magento Enterprise является Full Page Cache (далее FPC). Эту «фишку» реализует модуль Enterprise_PageCache, входящий в состав пакета Magento Enterprise.
В статье рассматривается самая свежая на момент написания статьи версия Magento Enterprise: 1.13.1.
FPC позволяет отдавать серверу страницу за считанные миллисекунды, практически не нагружая сервер. Я провел замеры времени отдачи страницы продукта сервером (в одном из проектов, над которым работал), вот результаты:
- 65 ms при включенном FPC (когда все блоки были закешированы);
- 1250 ms при выключенном FPC (при этом все остальные виды кеша включены);
- 2500 ms при отключенном кеше всех видов.
Почему разница настолько велика? Давайте разберёмся.
Горизонтальное масштабирование PHP приложений. Часть 1
2014-01-29 в 5:41, admin, рубрики: highload, load balancing, memcached, php, redis, Веб-разработка, высокая производительность
Итак вы сделали сайт. Всегда интересно и волнительно наблюдать как счетчик посещений медленно, но верно ползет вверх, с каждым днем показывая все лучшие результаты. Но однажды, когда вы этого не ждете, кто-то запостит ссылку на ваш ресурс на каком-нибудь Reddit или Hacker News (или на Хабре — прим. пер.), и ваш сервер ляжет.
Вместо того, что бы получить новых постоянных пользователей, вы останетесь с пустой страницей. В этот момент, ничего не поможет вам восстановить работоспособность сервера, и трафик будет утерян навсегда. Как же избежать таких проблем? В этой статье мы поговорим об оптимизации и масштабировании.
Читать полностью »
Highload инфоблоки и работа с ними
2013-12-27 в 19:31, admin, рубрики: 1С-Битрикс, highload, битрикс, инфоблоки, метки: highload, битрикс, инфоблокиДоброго времени суток.
Сегодня поговорим о Highload инфоблоках. Точнее как с ними работать. Если вы посмотрите в инете, то везде есть как с них взять инфу, но как наоборот записать-изменить-удалить — этого я не нашел (наверное просто я плохо искал), но мне ооочень надо было.
Поэтому я обратился к ЛайфАПИ и раскопал кое-что. Начнем по порядку.
Как вы наверное заметили, эти инфоблоки содержат пользовательские поля. Т.е. каждое поле начинается с UF. Но я не буду разжевывать, т.к. кто кодит на битриксе, тот знает это.