Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Как «pecl» зол порой бывает

Чулан
Сегодня столкнулся с проблемой прикрутки memcache к PHP собранному из сырцов. А именно при попытке выполнить:
[root@idev bin]# ./pecl install memcache

Я получал следующий результат:
downloading memcache-2.2.3.tgz…
Starting to download memcache-2.2.3.tgz (27,304 bytes)
.........done: 27,304 bytes
11 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
ERROR: `phpize' failed

Читать дальше →
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 110
Комментарии 17

Разгоняем Wordpress

Высокая производительность *
SEO Digest #5Данный обзор написан специально для SEO Digest — популярного онлайн-журнала среди вебмастеров и поисковых оптимизаторов. Публикуемые в нем материалы рассчитаны на широкую аудиторию пользователей: от профессионалов Рунета до любителей и начинающих. Журнал доступен в PDF и онлайн версии.

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

Основные положения


Ускорение работы любой системы возможно в основном за счет кэширования некоторых (тут стоит подчеркнуть, что именно некоторых, а не всех подряд) часто используемых операций. Все кэширующие мероприятия, в том числе и для Wordpress, можно разбить на несколько основных частей:
  • База данных
  • Компиляция серверных скриптов (PHP)
  • Статические страницы
  • Клиентская составляющая

Читать дальше →
Всего голосов 69: ↑59 и ↓10 +49
Просмотры 35K
Комментарии 23

Умные сессии

PHP *
Решаем проблемы производительности.

Исходные данные.
Транслируем футбольные матчи через интернет. Посетителей: в обычные дни 5 000 — 10 000, в дни матчей 100 000 — 150 000.

В дата-центре
  • 5 веб-серверов с апачем и ПХП, наружу вывешены через аппаратный балансировщик загрузки
  • 2 пула мемкеша: для сессий и данных из веб-сервисов

Проблема
При большом наплыве посетителей происходит перегрузка локальной сети из-за большого количества обращений к мемкешу. Усугублящие факторы: 100Мбит сеть, оба пула на одних и тех же серверах.
Читать дальше →
Всего голосов 79: ↑54 и ↓25 +29
Просмотры 3.3K
Комментарии 70

Установка nginx + php-fpm + memcache + eaccelerator на FreeBSD

Серверная оптимизация *
Зачем всё это? — спросите вы. Да просто захотелось поделиться с общественностью некоторым опытом, полученным в процессе оптимизации vds под нужды одного общеизвестного блого-социального движка, который на обычном хостинге чувствует себя, мягко скажем, некомфортно.

Началось всё с того, что я ушёл от firstvds, где уже ничто не спасёт от тормозов. Ушел на ганди.нет, взял одну шару (1 share), которую дали на месяц бесплатно. Кстати, акция эта (This summer, your server is free!) вроде еще не закончилась. ;) И начал на этой шаре проводить зверские эксперименты с установкой разного ПО. Тестировал результаты с помощью siege.

В итоге конфигурация из сабжа оказалась самая быстрая. Опытом её установки и настройки я и хотел бы с вами поделиться.

Поехали!
Всего голосов 90: ↑74 и ↓16 +58
Просмотры 48K
Комментарии 48

Выбор хостинга для LiveStreet: на повестке дня TrueVDS.ru

LiveStreet
На сайте LiveStreet периодически возникают вопросы производительности. Рано или поздно все приходят к тому, что обычный хостинг не тянет движок в силу некоторых его особенностей. бывают исключения из правил, но редко — обычно у новых хостеров с «пустыми» серверами.

Пару дней назад я говорил, что перешёл на ганди.нет, где тестировал разный софт. К сожалению, тесты не сохранились и в заметке я ограничился описанием установки софта под FreeBSD.

Совершенно неожиданно мне поступило предложение от TrueVDS.ru написать инструкцию по установке софта под Дебиан для новичков и протестировать некоторые тарифные планы. Инструкцию и тесты решил разбить на два поста, т.к. кому-то интересно одно, кому-то другое, а текста получилось многовато, тяжело для восприятия. Установка софта под Дебиан тут,
а тестирование здесь
Всего голосов 49: ↑34 и ↓15 +19
Просмотры 4.4K
Комментарии 48

Установка для «чайников»: nginx + php-cgi + mysql + eaccelerator + memcache на Debian 5.0 «lenny»

Серверная оптимизация *
Данная заметка является шпаргалкой для новичков в установке нормально работающего комплекса, описанного в заголовке. Все пункты установки протестированы несколько раз на разных vds, поэтому проблем с нехваткой чего-то быть не должно, как это обычно бывает, когда ставишь что-то по мануалам, надерганных из разных источников. Подробно описания настроек и «тюнинга» в заметке нет, т.к. это всё очень индивидуально и требует понимания что, как и зачем делается, а это невозможно охватить в одной даже очень большой шпоре.
Читать дальше →
Всего голосов 76: ↑56 и ↓20 +36
Просмотры 77K
Комментарии 78

Memcached. Как найти ключи по паттерну?

Разработка веб-сайтов *
Доброе утро|день|вечер|ночь, %username%!

При использовании Memcached, иногда могут возникнуть вопросы: «А как посмотреть все ключи Memcached?» или «Как найти все ключи по маске „*“ или „sql_*“ ?»
Вот тогда открываются мануалы и начинается поиск такой функции, но, к сожалению, такой не оказывается :-(
Потом начинается Гугление… И там особо ничего нет :-(
А потом начинается поиск незадокументированных возможностей :-) и тут «Ура! Нашел!»

Читать дальше →
Всего голосов 61: ↑39 и ↓22 +17
Просмотры 8.4K
Комментарии 44

ORM – зло или Как я пытался кэшировать Propel в Symfony

Symfony *
Работая над одним проектом (соц. сетью) передо мной встала задача «подружить» модель данных с memcache. Как Вы уже поняли из заголовка, проект написан на symfony framework, а в качестве ORM используется Propel.
Читать дальше →
Всего голосов 20: ↑10 и ↓10 0
Просмотры 2.3K
Комментарии 16

Плагин sfPropelMemcachePlugin

Symfony *
Продолжая тему, начатую мной в статьях «ORM – зло или Как я пытался кэшировать Propel в Symfony» и «Как я подружил «memcache» и Propel в Symfony» хочу рассказать о том, во что вылились мои попытки кэшировать модель данных.

Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Просмотры 573
Комментарии 14

Twisted в действии — memcache на python

Python *

Преамбула


В связи с выходными потратил немного времени на реализацию сервера Memcache с использованием python-фреймворка Twisted. В итоге я получил быстродействие в два раза более низкое, что я не считаю очень критичным, а также возможность реализовать парочку расширений оригинального протокола. Также возможны оптимизации, которые еще улучшат быстродействие.
Протокол не был реализован полностью — есть еще моменты над которыми можно поработать, но стандартные set/get вполне работоспособны и готовы к использованию.

Средства


Для хранения кеша используем базовый класс dict. Как вы догадываетесь, реализация dict в python быстра, этот базовый тип используется в python настолько активно, что его не оставили без детальной оптимизации. Таким образом, мы автоматом имеем структуру для хранения кеша в памяти. Осталось реализовать протокол memcache, для предоставления доступа к dict другим программам.

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

Читать дальше →
Всего голосов 42: ↑36 и ↓6 +30
Просмотры 7.1K
Комментарии 13

2000 часов в одиночестве, или как был сделан RSS reader / Я робокоп

Я пиарюсь
I. Am. Robocop.Всем привет,

Собираюсь поделиться с вами технической стороной того, как я за 16 недель сделал новый вебовый rss ридер, и чуть не сошел с ума.
Отходя от долгой предыстории, будем считать, что все началось в феврале этого года, когда мы с Дэвидом (dmiloshev, UI-дизайнер) решили сделать прототип нашего детища вдвоем.
«В одиночестве» — потому, что не было никаких скрамов, совещаний, «коллективного разума», а всю техническую часть, довелось делать самому.

Если бы меня попросили описать всю статью в одном предложении, то получилось бы:
No-SQL, mongodb, node.js, фак мой мозг, Evented I/O, очереди, выводы, git, nginx, memcached, Google Reader, Atom, TTL, PHP, ZF, jQuery, выводы.
Читать дальше →
Всего голосов 258: ↑231 и ↓27 +204
Просмотры 6.2K
Комментарии 173

Php + Cache + Tags = phpCacheTag

PHP *
Однажды, читая Хабр, я наткнулся на пост уважаемого dmitrykoterov про кеш и теги, который мне очень запал в душу. Как-раз тогда я возился с кешем и тоже, как и очень многие, пришёл к выводу, что ему(кешу) очень не хватает нативных тегов, по которым удобно было бы определённые порции кеша рубить одной строчкой. Рубить, не вдаваясь в именования переменных, которые под этими тегами числятся. Странно что осуществлением этой возможности занимаются сторонние разработчики, если говорить о самом популярном у нас memcache.

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

Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Просмотры 2.1K
Комментарии 42

История развития и оптимизаций одного высоконагруженного ресурса

Разработка веб-сайтов *
Из песочницы


Введение

Все началось с того, что я стал системным администратором у одного провинциального Интернет-провайдера. Помимо администрирования различного рода ресурсов, мне в присмотр достался один молодой, но бурно развивающийся ресурс. Ресурс представлял из себя классический LAMP проект. Сайт, на котором генераторами контента являлись обычные пользователи.
* К слову, в то время я ничего не понимал в *nix системах, хоть и все сервера которые мне достались, были именно на нем, разбирался я во всем этом достаточно быстро.

Как обычно бывает с ресурсами, набирающими популярность, железки на которых все крутится, перестают справляться. Ресурс стоял на стареньком двухпроцессорном сервере, на котором крутились практически все сервисы для пользователей. В то время начальство не воспринимало ресурс как нечто стоящее вложений, поэтому, к моему сожалению (а позже – счастью), денег под новую железку мне не выделяли.
Читать дальше →
Всего голосов 208: ↑198 и ↓10 +188
Просмотры 13K
Комментарии 56

Повышение производительности за счет блочного кеширования

Высокая производительность *
Тема блочного кеширования и ssi не раз проскакивала на Хабре. Ниже я представлю еще одну реализацию, использующего блочное кеширование, а также исходники фреймворка, использующего эти принципы, которые можно найти тут. А как это работает — прочитать ниже.
схема кеширования блоками
Читать дальше →
Всего голосов 56: ↑49 и ↓7 +42
Просмотры 5.3K
Комментарии 60

Хранение данных в Google App Engine

Google App Engine *
За основу данной статьи взята запись в блоге Ника Джонсона (Nick Johnson). В дополнение к ней приведено немного цифр, актуальных на данный момент и добавлены некоторые заметки.

App Engine предоставляет множество способов хранения информации. Некоторые (например, хранилище данных) хорошо известны, но другие почти нет, и у всех них характеристики различаются. В этой статье будут перечислены различные возможности и описаны преимущества и недостатки каждой из них, так что Вы сможете принимать решения, имея больше информации о возможностях хранения данных.
Читать дальше →
Всего голосов 42: ↑40 и ↓2 +38
Просмотры 4.9K
Комментарии 20

Кэширование в Google App Engine

Google App Engine *
Google App EngineКак вы уже знаете из предыдущей статьи, в App Engine есть множество способов хранения информации. Но многие из них весьма специфичны, и для повсеместного пользования подходят всего три: память инстанса, memcache и datastore.

Под катом вас ждёт изложение в цифрах и картинках, краткие рекомендации по кэшированию и исходные коды простого cacher'a и приложения для тестов.
Читать дальше →
Всего голосов 42: ↑37 и ↓5 +32
Просмотры 1.3K
Комментарии 21

Простой дополнительный контроль состояния данных memcached

Разработка веб-сайтов *
image Мониторинг memcached — дело далеко не последней важности. Как на этапе тестирования, так и на этапе сопровождения уже работающего нагруженного ресурса. Средств «из коробки» для этого не так уж и много, а если вы работает с PHP, то зачастую ограничиваетесь средствами memcache (или memcached), а именно

Memcache::getStats()

$memcache = new Memcache;
$memcache->connect('localhost',11211);
print_r($memcache->getStats());


что возвращает типичный набор данных

Array ( [pid] => 25722 [uptime] => 4487286 [time] => 1308323074 [version] => 1.2.2 [pointer_size] => 64 [rusage_user] => 2646.005365 [rusage_system] => 17108.873237 [curr_items] => 37761 [total_items] => 10764857 [bytes] => 140070186 [curr_connections] => 5 [total_connections] => 17360659 [connection_structures] => 31 [cmd_get] => 89154830 [cmd_set] => 10764857 [get_hits] => 83452021 [get_misses] => 5702809 [evictions] => 0 [bytes_read] => 3527860756618 [bytes_written] => 4234517241183 [limit_maxbytes] => 2147483648 [threads] => 1 )

Вроде всё хорошо.
Мы видим, что у нас занято 133,5 Mb из 2 Gb выделенных под memcached и около 37 тыс. ключей.
Hits к misses относиться как 83/5, что тоже не внушает опасений.
Читать дальше →
Всего голосов 46: ↑33 и ↓13 +20
Просмотры 4.4K
Комментарии 23

Сравнение MemCache и MongoDb для сетевого кэша

PHP *
Из песочницы
Возникла достаточно неординарная идея: виде средства сетевого кеша взять не MemCache, а MongoDb и сравнить их производительность. Но для представления и сравнения показателей этих двух «механизмов кеширования» взяли еще и другие средства, позволяющие ускорить работу нашего App (APC, RamFS, TmpFS, XCache).
В статье приведены данные и графики сравнения этих механизмов с описанием и рассуждением полученных данных и графиков.
Читать дальше →
Всего голосов 45: ↑37 и ↓8 +29
Просмотры 9.5K
Комментарии 46

Как избежать коллизий при записи в Memcache из PHP

PHP *
Из песочницы
Обычно программисты используют технологии по прямому назначению, но я решил провести эксперимент и попробовать использовать сервер memcached как масштабируемое временное key=value хранилище.
Memcached предназначен для простого кэширования статических данных, потому в нем не предусмотрена система избежания коллизий.

Запись данных


Стандартная ситуация

Предположим, что наше PHP приложение работает на одном сервере, а memcached работает на удаленной машине. Мы без проблем сможем читать и писать в одну и ту же ячейку, потому как приложение не WEB, так что процесс один. Из-за линейности процесса, ему не удастся одновременно записывать разные данные в одну и ту же ячейку.
Два и более процесса

Сегодня нам понадобилось разделить приложение на два сервера и начались проблемы. Возникли коллизии при записи в memcache. Выяснилось, что в 80% случаев приложения пытаются одновременно записать свои данные в одну ячейку. Идеальным решением было бы использование shared memory, но она не масштабируется в отличие о Memcached. В связи с большим объемом кода и предполагаемым временем на переписывание приложений, было принято решение добавить костыль.
Читать дальше →
Всего голосов 24: ↑19 и ↓5 +14
Просмотры 6.7K
Комментарии 79
1