Pull to refresh
  • by relevance
  • by date
  • by rating

Из говнокода в Highload. Используем ТАРАНtool. 5 рецептов повышения производительности

High performance *PHP *NoSQL *
Ко мне обратился один руководитель стартапа социальной игры с просьбой увеличить производительность своего проекта. На этом этапе был сделан и запущен прототип проекта. И надо отдать должное разработчикам, что проект работал и даже приносил какую-то прибыль. Но, запускать рекламную компанию не имело смысло, так как проект не выдерживал ни каких нагрузок. Валился MySQL (35% ошибок).

Код проекта… В общем у меня осталось впечатление, что писал его недоученный студент… И это, немотря на то, что уже был сделан частичный рефакторинг другим программистом. Единственное, что радовало, то это то, что не использовался какой-либо фреймворк. Конечно, это вечно флеймовый вопрос: Иисус или Магомед? Быть или не Быть? Unix или Windows? Использовать или не Использовать? ИМХО, Моё мнение: фреймворки заточены под узкий круг типовых задач. Социальный проект — задача, как правило, не типовая… Но, в целом, мне проект показался интересным и я решил взяться за улучшение. На этом вступление можно закончить…

Наверно, про повышение производительности и тему highload не писал только ленивый WEB разработчик, знающий хоть что-то в этой области. Принципиально, что-то нового, в данной статье вы не найдёте. Основные идеи разработки highload проектов, были мною изложены в цикле статей HighLoad. Три кита.. Если вам интересно, как я увеличил производительность PHP проекта, используя NoSQL хранилище tarantool, то Добро пожаловать под кат.

Хотя, принципиально можно использовать другое, подходящее под данный круг задач, key/value хранилище, и реализация серверной логики может быть на любом другом скриптовом языке.
Читать дальше →
Total votes 53: ↑31 and ↓22 +9
Views 32K
Comments 52

Ускорение кода на Python средствами самого языка

Python *
Каким бы хорошим не был Python, есть у него проблема известная все разработчикам — скорость. На эту тему было написано множество статей, в том числе и на Хабре.

Что с этим можно сделать?
Total votes 98: ↑86 and ↓12 +74
Views 64K
Comments 46

О тонкостях повышения performance на С++, или как делать не надо

Programming *C++ *
image
Однажды, много лет назад, пришел ко мне клиент, и слезно умолял поручил разобраться в одном чудесном проекте, и повысить скорость работы.

Вкратце, задача была такой — есть некий робот на С++, обдирающий HTML страницы, и собранное складывающий в БД (MySQL). С массой функционала и вебом на LAMP — но это к повествованию отношения не имеет.

Предыдущая команда умудрилась на 4-ядерном Xeon в облаке получить фантастическую скорость сбора аж в 2 страницы в секунду, при 100% утилизации CPU как сборщика, так и БД на отдельном таком же сервере.

Читать дальше →
Total votes 134: ↑117 and ↓17 +100
Views 34K
Comments 65

Тюнинг MySQL — thread_cache_size

System administration *Server optimization *
Параметр thread_cache_size играет немаловажную роль в производительности нагруженного MySQL-сервера. В некоторых случаях можно увеличить производительность на 30-50%.

Этот параметр указывает количество тредов, уходящих в кеш при отключении клиента. При новом подключении тред используется из кеша, что позволяет экономить ресурсы при больших нагрузках.
Читать дальше →
Total votes 46: ↑32 and ↓14 +18
Views 52K
Comments 19

Некоторые особенности использования виртуальных машин для новичков

Virtualization *
Sandbox
Виртуальные машины, такие как Virtualbox, используются для эмуляции виртуальное оборудование и запуска нескольких операционных систем на компьютере. Чем лучше будет у вас CPU и чем больше будет оперативной памяти, тем быстрее будут выполнятся виртуальные машины на вашем компьютере.
Я предлагаю несколько советов которые помогут вам сэкономить время при начальной настройке виртуальных машин. Это будет полезно для работы с виртуальными машинами VirtualBox, VMware, Parallels, или любой другой.

Читать дальше →
Total votes 73: ↑24 and ↓49 -25
Views 262K
Comments 25

Аппаратное ускорение рендеринга в браузере Chrome

CSS *JavaScript *Google Chrome
Translation
Tutorial

Введение


Для большинства веб-разработчиков фундаментальным представлением веб-странницы является DOM. В то время как процесс преобразования этого представления в изображение на экране (далее рендеринг) часто покрыто пеленой непонимания. В последние годы разработчики браузеров активно оптимизируют этот процесс, перекладывая часть работы на плечи графических процессоров: то что называется “аппаратным ускорением (hardware acceleration)”. Мы рассмотрим рендеринг в контексте обычных страниц, исключая Canvas2D и WebGL. Эта статья попытается пролить свет на фундаментальную концепцию использования аппаратного ускорения при генерации изображения веб-контента в браузере Chrome.
Читать дальше →
Total votes 44: ↑43 and ↓1 +42
Views 41K
Comments 10

Заметки для менеджеров по продажам в веб-студии или «О бедном маркетологе замолвите слово»

Website development *
Sandbox

Предисловие:


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

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

 

ОБЩАЯ ИДЕЯ:


Всё чаще заказчики, приходя в компанию за разработкой каких-либо продуктов или сервисов, желают получить не просто готовый продукт “под ключ”, но и подготовить всё для последующего маркетингового продвижения своего детища (Internet marketing: SEO, SMM, Email Marketing, etc.)

Однако, очень часто сам заказчик не знает или неправильно понимает, какие задачи ему предстоит решать в последствии. И что их нужно решать сообща с маркетологами чтоб добиться продвижения своего продукта или сервиса.

Соответственно, первоначальной задачей продавца (Sales Manager) в этой ситуации будет рассказать о методах и инструментах продвижения. Но стоит указать, что чтобы сделать осознанный выбор тех или иных методов либо же целого комплекса мероприятий, необходимо провести серию аудитов. Это будут аудиты технической части проекта, рынка существующих предложений и конкуренции. После этого можно более осознано выбрать технологии для будущего продукта.
Подробности
Total votes 18: ↑7 and ↓11 -4
Views 12K
Comments 6

Как мы увеличили скорость генерации JSON в 6000 раз

Staply corporate blog Ruby *Ruby on Rails *
Tutorial
Краткий обзор способов формирования JSON

На сегодняшний день в Rails имеются следующие способы сериализации объектов в JSON:
  1. Вызов to_json() напрямую.
  2. RABL
  3. Active model serializers
  4. JBuilder

Читать дальше →
Total votes 22: ↑10 and ↓12 -2
Views 14K
Comments 10

Аппаратное ускорение в жизни верстальщика. Семинар в Яндексе

Яндекс corporate blog Website development *CSS *

Привет! Меня зовут Александр Завьялов. В Яндексе я занимаюсь разработкой интерфейсов. Недавно я выступил перед коллегами с докладом об аппаратном ускорении в жизни верстальщика, где также коснулся смежных тем. Рассказал о производительности веб-страниц, о том, как она измеряется и к чему она может стремиться.



Ссылка, если видео не отображается

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


Читать дальше →
Total votes 96: ↑95 and ↓1 +94
Views 68K
Comments 21

NetApp FAS оптимизация производительности

High performance *
В этой статье я сфокусируюсь на оптимизации производительности систем NetApp FAS.

Объектами оптимизации с точки зрения СХД могут быть настройки:
  • SAN в СХД
  • Ethernet в СХД
  • NAS в СХД
  • Дисковой подсистемы на Back-End СХД
  • Дисковой подсистемы на Front-End СХД
  • Проверка совместимости прошивок
  • Ускорители



Для поиска узкого места обычно выполняют методику последовательного исключения. Предлагаю перво-наперво начать с СХД. А дальше двигаться СХД -> Сеть (Ethernet / FC) -> Хост ( Windows / Linux / VMware ESXi 5.Х и ESXi 6.X ) -> Приложение.
Читать дальше →
Total votes 5: ↑3 and ↓2 +1
Views 18K
Comments 0

Ненадёжный Ethernet

High performance *
В продолжение предыдущей статьи "Ethernet & FC", хотел бы дать конкретные рекомендации по оптимизации Ethernet сети для работы с СХД NetApp FAS. Хотя, полагаю, многие вещи описанные здесь могут быть полезны и для других решений.

Читать дальше →
Total votes 13: ↑9 and ↓4 +5
Views 38K
Comments 24

Windows 2008/2012 c NetApp ONTAP 8 (SAN)

High performance *
В этой статье я хотел бы рассмотреть тему оптимизации Windows Server (с виртуализацией и без) с использованием СХД NetApp FAS в среде SAN.

Для поиска и устранения узких мест в такой инфраструктуре, нужно опредилиться с компонентами инфраструктуры, среди которых их стоит искать. Разделим инфраструктуру на следующие компоненты:

  • Настройки хоста c SAN (FC/FCoE)
  • Настройки Ethernet сети на хосте для IP SAN ( iSCSI ).
  • Собственно сам хост с ОС
  • Приложения на Хосте
  • Проверка совместимости драйверов и версий ПО


Читать дальше →
Total votes 4: ↑4 and ↓0 +4
Views 9K
Comments 3

Самая медленная инструкция x86

Intel corporate blog High performance *Programming *Assembler *System Programming *
Все знают и любят ассемблер x86. Большинство его инструкций современный процессор исполняет за единицы или доли наносекунд. Некоторые операции, которые декодируются в длинную последовательность микрокода, или ожидающие доступа к памяти могут исполняться намного дольше — до сотен наносекунд. Этот пост — о рекордсменах. Хит парад из четырех инструкций под катом, но для тех, кому лень читать весь текст, я напишу здесь, что главный злодей — [memory]++ при определенных условиях.

image

КПДВ взята из документа Агнера Фога, который, наряду с двумя документами от Intel (optimization guide и architecture software development manual) содержат много полезного и интересного по теме.
Читать дальше →
Total votes 45: ↑45 and ↓0 +45
Views 36K
Comments 28

RedHat/Oracle Linux с NetApp FAS (SAN)

High performance *
В продолжении темы по оптимизации хоста. В предыдущей статье я писал об оптимизации Windows и SAN сети, в этой статье я хотел бы рассмотреть тему оптимизации RedHat/Oracle Linux (с виртуализацией и без) с использованием СХД NetApp FAS в среде SAN.

Для поиска и устранения узких мест в такой инфраструктуре, нужно опредилиться с компонентами инфраструктуры, среди которых их стоит искать. Разделим инфраструктуру на следующие компоненты:

  • Настройки хоста c SAN (FC/FCoE)
  • Настройки Ethernet сети на хосте для IP SAN ( iSCSI ).
  • Собственно сам хост с ОС
  • Приложениями на Хосте
  • Проверка совместимости драйверов и версий ПО


Читать дальше →
Total votes 23: ↑19 and ↓4 +15
Views 14K
Comments 6

Sexy primes, «медленный питон» или как я бился о стену непонимания

High performance *Python *Programming *System Analysis and Design *
Многие разработчики, особенно принимающие активное участие в проектировании системы, наверняка сталкивались с подобной ситуацией: приходит коллега (разраб, проектлид или продажник не суть важно) с очередной идеей-фикс: давай перепишем все на java, scala и т.д. (любимое подставить).

Вот и мне в очередной раз «спустили» такую идею в немаленьком-таком legacy проекте. Не совсем переписать, не совсем все (ну в перспективе). В общем перейти с питона (а у нас там еще и тикль модульно присутствует) на scala. Речь пока шла о разработке новых модулей и сервисов, т.е. начинать с наименее привязанных к middle-level и front-nearby API's. Как я понял в перспективе возможно совсем.

Человек — не разработчик, типа нач-проекта и немного продажник (для конкретного клиента) в одном лице.

Я не то, чтобы против. И скалу уважаю и по-своему люблю. Обычно я вообще открыт ко всему новому. Так, например, местами кроме тикля и питона у нас появляются сервисы или модули на других языках. Так, например, мы переехали с cvs на svn, а затем на git (а раньше, давно-давно, вообще MS-VSS был). Примеров на самом деле масса, объединяет их один момент — так решили или как минимум одобрили сами разработчики (коллективно ли, или была группа инициаторов — не суть важно). Да и дело в общем в аргументах за и против.

Проблема в том, что иногда для аргументированной дискуссии «Developer vs. Anybody-Else» у последнего не дотягивает уровень знаний «материи» или просто невероятно сложно донести мысль — т.е. как-бы разговор на разных языках. И хорошо если это кто-нибудь типа software architect. Хуже, если имеем «беседу» например с чистым «продажником», огласившим например внезапные «требования» заказчика.

Ну почему никто не предписывает, например, плиточнику — каким шпателем ему работать (типа с зубцами 10мм клея же больше уйдет, давайте может все же 5мм. А то что там полы-стены кривущие никого не волнует). И шуруп теоретически тоже можно «закручивать» молотком, но для этого же есть отвертка, а позже был придуман шуруповёрт. Утрирую конечно, но иногда действительно напоминает такой вот абсурд.

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

Но что-то я отвлекся. В моей конкретной истории аргументов — за scala, у человека как всегда почти никаких.
Хотя я мог бы долго говорить про вещи, типа наличие разрабов, готовые наработки, отточенную и отлаженную систему и т.д. и т.п. Но зацепился за его «Питон очень медленный». В качестве примера он в меня кинул ссылкой на Interpreting a benchmark in C, Clojure, Python, Ruby, Scala and others — Stack Overflow, которую он даже до конца не прочитал (ибо там почти прямым текстом есть — не так плохо все с питоном).

Имелось ввиду именно вот это (время указано в секундах):
  Sexy primes up to:        10k      20k      30k      100k
  ---------------------------------------------------------
  Python2.7                1.49     5.20    11.00       119     
  Scala2.9.2               0.93     1.41     2.73     20.84
  Scala2.9.2 (optimized)   0.32     0.79     1.46     12.01

Читать дальше →
Total votes 57: ↑46 and ↓11 +35
Views 30K
Comments 55

Улучшение производительности Python 2.7

High performance *Open source *Python *Client optimization *
Translation

От переводчика: в двух словах, в декабре 2015 выйдет релиз Python 2.7.11, ускоряющий работу интерпретатора CPython до 20%. Ниже перевод статьи с LWN.net, рассказывающей о сути и процессе произошедших изменений в коде. Имена, в произношении которых я не уверен, даны в оригинальном написании. Об ошибках и неточностях перевода просьба, как обычно, сообщать в личные сообщения.

Несмотря на то, что разработка Python 2 (а конкретно ветки Python 2.7.x) находится сейчас в состоянии «никаких новых фич», которое в обычной ситуации заранее ставит крест на любых крупных изменениях, команда разработки приняла решение рассмотреть и принять backport-патч из Python 3, привносящий заметное улучшение производительности интерпретатора.
Читать дальше →
Total votes 47: ↑45 and ↓2 +43
Views 19K
Comments 5

Бесплатный моновендорный семинар: «Kerio Connect — решение для безопасной и комфортной работы с электронной почтой»

Kerio Technologies corporate blog


Друзья!

Мы рады сообщить, что компании Kerio Technologies и Softline приглашают Вас 8 сентября 2015г. принять участие в бесплатном семинаре: «Kerio Connect — решение для безопасной и комфортной работы с электронной почтой».

Интересно? Детали под катом…
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 2.5K
Comments 0

Измерение производительности функций в JavaScript

VK corporate blog High performance *JavaScript *Client optimization *Debugging *
Translation


Производительность всегда играла ключевую роль в программном обеспечении. А в веб-приложениях её значение ещё выше, поскольку пользователи легко могут пойти к конкурентам, если сделанный вами сайт работает медленно. Любой профессиональный веб-разработчик должен об этом помнить. Сегодня по-прежнему можно успешно применять массу старых приёмов оптимизации производительности, вроде минимизации количества запросов, использования CDN и не использования для рендеринга блокирующего кода. Но чем больше разработчики применяют JavaScript, тем важнее становится задача оптимизации его кода.
Читать дальше →
Total votes 30: ↑28 and ↓2 +26
Views 30K
Comments 15

Сравнение строк в C# (по умолчанию)

Programming *.NET *C# *
Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи LINQ to Objects. При этом происходит сравнение ключей, выбранных для группировки или связывания.
К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?
clients.Join(orders, 
                   c => c.Name, 
                   o => o.ClientName, 
                   (c, o) => CreateOrederDto(c, o));

Как же выбирается реализация компаратора, если пользователь не указал её явно?
Пороемся в исходном коде coreclr
Total votes 28: ↑28 and ↓0 +28
Views 44K
Comments 1

[СПб, Анонс] Встреча с Андреем Паньгиным — Всё, что вы хотели знать о стек-трейсах и хип-дампах

Одноклассники corporate blog JUG Ru Group corporate blog High performance *Java *
В четверг, 26 мая, в 20:00 в питерском офисе компании Luxoft состоится встреча JUG.ru с Андреем Паньгиным aka apangin, ведущим разработчиком Одноклассников. Тема встречи — особенности JDK, связанные с обходом Heap-a и стеками потоков.



Stack Trace и Heap Dump — не только инструменты отладки, но ещё и дверцы к самым недрам виртуальной машины Java. Презентация посвящена особенностям JDK, так или иначе связанным с обходом хипа и стеками потоков. В её основе лежат популярные вопросы про JVM со StackOverflow и реальные случаи из практики.

  • Влияют ли стек-трейсы на производительность?
  • Как снимать дампы в продакшне без побочных эффектов?
  • Как устроены утилиты jmap и jstack изнутри?
  • Почему все профайлеры врут, и как с этим бороться?
  • Как сканировать хип средствами JVMTI и Serviceability Agent?


Участие бесплатное, регистрация — ТУТ.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views 4.6K
Comments 1