Вчера я наконец-то поднял munin и новый monit на сервере, а сегодня посмотрел на результаты мониторинга. Самое первое, что бросилось в глаза: iostat показывает очень большое количество записей (превышавшее количество чтений почти в тысячу раз).

На сервере живут четыре сайта на WordPress, два из которых (littlefox.ru и cat-tv.ru) находятся в Alexa Top 100,000 (они создают основную нагрузку на сервер).

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

С целью поэкспериментировать мы отключили SuperCache. В результате получилась такая картина. Далее

29
Июль
2009

Ужасы таксономии в WordPress

Vladimir
Опубликовано в: WordPress

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

Я взял свежую дефолтную инсталляцию WordPress 2.8-bleeding, сгенерировал тестовый контент и пошел искать недоработки и проблемы с производительностью. Одну из них я нашел очень быстро: при попытке удалить категорию, в которой была 1,001 ночь запись.

На неслабом сервере это заняло около 20 секунд и… более 12,000 запросов (да-да, двенадцати тысяч, я количеством ноликов, увы, не ошибся). Далее

9
Июнь
2009

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

6
Июнь
2009

Практическая польза fast-типов

Vladimir
Опубликовано в: C/C++

В данной статье речь пойдёт о типах int_fastXX_t/uint_fastXX_t из stdint.h.

Мне было интересно потестировать параллельную реализацию шифрования алгоритмом ГОСТ 28147–89 на многоядерных процессорах (с использованием OpenMP, но это тема для отдельной статьи).

Как известно, ГОСТ 28147–89 — блочный шифр, оперирующий 64-битными (uint64_t) блоками. При выполнении зашифрования в режиме простой замены открытый текст разбивается на две половины (uint32_t). В принципе, это всё, что пока нужно знать :-)

Те, кто знакомы с особенностями архитектур 32- и 64-битных процессоров, знают, что 32-битные процессоры быстрее обрабатывают 32-битные числа, а 64-битные — соответственно, 64-битные.

В стандарте C99 языка C в файле <stdint .h></stdint> определены так называемые "быстрые типы": int_fast8_t, int_fast16_t, int_fast32_t, int_fast64_t, uint_fast8_t, uint_fast16_t, uint_fast32_t и uint_fast64_t. Далее

20
Март
2009

WP File Cache 1.0

Vladimir
Опубликовано в: Плагины

Появилась новая версия плагина WP File Cache.

В данной версии у плагина появился интерфейс для администратора и, как следствие, возможность "тонкой настройки".

Функциональность плагина:

  • реализация долговременного кэширования на уровне запросов;
  • полная совместимость с интерфейсом класса WP_Object_Cache WordPress;
  • использование памяти под сессионный кэш для увеличения производительности;
  • сессионное кэширование часто изменяющихся объектов;
  • хранение настроек в коде плагина.

Особенности плагина:

  • возможность отключения кэширования (в том числе и встроенного в WordPress);
  • возможность отключения межсессионного кэширования;
  • возможность задания групп, не подлежащих межсессионному кэшированию (полезно только разработчикам, которые знают, о чём идёт речь);
  • плагин хранит свои настройки непосредственно в коде (в файле wp-content/object-cache.php). Это связано с проблемой курицы и яйца, а также с архитектурными особенностями WordPress.

Плагин существует в двух локализациях: русской и английской. Если у Вас есть желание перевести плагин на другой язык, пишите.

Замечания по установке: после активации плагин для хранения кэша будет использовать каталог wp-content/plugins/file-cache/cache. Поэтому перед активацией каталог должен быть доступен на запись. Каталог для хранения кэша можно изменить в настройках (для увеличения производительности имеет смысл размещать кэш на RAM-диске); каталог также должен быть доступен на запись. Плагину при активации/мохранении настроек должен быть доступен на запись каталог wp-content: в него копируется файл object-cache.php. После того, как плагин активирован и сконфигурирован, права на запись можно убрать.

По производительности плагин бьет как "голый" WordPress 2.7rc1, так и WordPress, "нагруженный" плагинами. Причем выигрыш в производительности становится всё более заметным при увеличении нагрузки на сайт (когда обмен данными с MySQL становится всё более интенсивным).

Плагин скоро появится на wordpress.org (да, у меня наконец-то дошли руки), и его можно будет скачивать прямо оттуда :-) Как следствие, у плагина появилась домашняя страница.

Скачать последнюю версию плагина WP File Cache.

Большое спасибо Максиму Покровскому за тестирование плагина под Windows.

2
Дек
2008