Qt, libfcgi и многопоточность
Для создания приложений FastCGI на C/C++ есть библиотека libfcgi. Не буду вдаваться в дискуссию, зачем нужны приложения FastCGI на C/C++/подставить нужный язык, когда Python/PHP/Perl/подставить нужное гораздо удобнее. Отмечу лишь, что по работе понадобилось написать FastCGI-приложение на Qt (в основном из-за наличия нескольких высокопроизводительных библиотек, написанных на Qt, но не суть).
Строго говоря, libfcgi, хотя и является официальной библиотекой от создателей протокола, не лучший вариант для поддержки FastCGI — API, предоставляемое библиотекой, сильно ограничено (в плане функциональности) и недостаточно гибко. Далее »
Автор: Vladimir, опубликовано в: Qt, комментариев: нетЯнв
2012
WordPress: кэширование средствами nginx
Много было сказано про кэширование в WordPress… Сегодня я хочу рассказать о действительно эффективном методе, позволяющем сильно снизить нагрузку.
Метод основан на использовании кэша FastCGI web-сервера nginx.
Идея состоит в генерации статических страниц и отдачи их пользователям, не имеющим cookie комментатора. Зарегистрированным пользователям, а также комментаторам всегда отдаётся свежая страница. Так как читателей, ни разу не оставлявших комментарий, как правило, гораздо больше, чем комментаторов, то подобный использование кэша позволяет значительно снизить нагрузку на WordPress/PHP. Знакомые с принципом работы WP Super Cache заметят, что WPSC использует тот же принцип работы. Далее »
Автор: Vladimir, опубликовано в: nginx, WordPress, комментариев: 61Дек
2010
WordPress MultiSite, nginx и X-Accel-Redirect
Одна из основных особенностей WordPress 3.0 — поддержка конфигурации MultiSite.
При использовании FastCGI с WordPress MultiSite может выявиться одно слабое место: загруженные файлы (которые uploads) дочерних блогов отдаются PHP-скриптом (wp-includes/ms-files.php). Если количество процессов FastCGI небольшое, а загружаемые файлы большие и при этом имеется медленные клиенты, проблемы с производительностью гарантированы: дело в том, что один процесс FastCGI в один момент времени может обслуживать только одного клиента. Если запущено 5 процессов php-cgi, и имеется пять медленных клиентов, качающих файлы, все остальные клиенты будут ждать освобождения процессов PHP. Если клиенты медленные, а файлы большие, ждущие клиенты будут получать ошибку 504.
К счастью, при использовании nginx проблема легко решается. Далее »
Автор: Vladimir, опубликовано в: nginx, WordPress, комментариев: 3Дек
2010
Патч для php-cgi, позволяющий конфигурировать значение listen backlog
По умолчанию значение listen backlog в php-cgi жёстко задано — 128. Это означает, что PHP не сможет обработать более 128 запросов одновременно (точнее, что очередь запросов не сможет превысить данного значения). Я столкнулся с тем, что 128 — это мало.
Для тех, кто столкнулся с данной проблемой, но по каким-либо причинам не хочет/не может поставить php-fpm (в котором backlog конфигурируется), я сделал небольшой патч. Далее »
Автор: Vladimir, опубликовано в: C/C++, PHP, комментариев: 10Янв
2010
WP Super Cache vs MaxSite Cache: часть 2
Вторая часть статьи WP Super Cache vs MaxSite Cache.
В предыдущей части я сравнивал поведение MaxSite Cache и WP Super Cache на тестовом VDS (512 MiB RAM, 10 GB HD, Intel Xeon X3320 (1 ядро), 2.5 GHz), на котором ни операционная система, ни программное обеспечение не были специально настроены — бралась конфигурация «из коробки» и тестировалась. Одним словом, «VDS абсолютного чайника».
В этой части изменилась только конфигурация программного обеспечения: сервер настраивался на максимальную производительность.
В частности:
- отказ от Apache в пользу nginx и от
mod_php5в пользуphp-fcgi(количество FastCGI-процессов выбиралось таким образом, чтобы избежать использования файла подкачки); - смена ядра с
linux-image-serverнаlinux-image-virtual; - настройка MySQL: отказ от InnoDB (экономит примерно 100 МБ памяти), увеличение буфера ключей и т.п.;
- установка и настройка xCache (я исходил из того, что далеко не все чувствуют себя комфортно при сборке программ из исходников, поэтому брал только готовое ПО);
- настройка
iptablesдля фильтрации пакетов.
Дек
2009
nginx Compatibility: делаем WordPress дружелюбнее к nginx
Переведя несколько сайтов с Apache на nginx, уже который раз встречаю подводные камни. Один из них — нежелание WordPress понимать код редиректа, другая — постоянные попытки использовать PATHINFO-пермалинки вместо «нормальных» (pretty permalinks).
Неудобно каждый раз лезть в код WordPress, чтобы поправить очередную несовместимость, поэтому я написал небольшой плагин. Далее »
Автор: Vladimir, опубликовано в: nginx, Плагины WordPress, комментариев: 7Апр
2009
WordPress, FastCGI и редирект 301: часть 2
Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).
В первой части предлагалось при использовании web-сервера nginx закомментировать проверку на SAPI PHP (if ( php_sapi_name() != 'cgi-fcgi' )). Однако есть лучшее решение. Далее »
Мар
2009
WordPress, FastCGI и редирект 301
Всё-таки удивительная штука WordPress… Сегодня чисто случайно обнаружил, что если PHP работает в режиме FastCGI (например, связка WordPress + nginx + PHP), то все редиректы с кодом 301 (Permanent Redirect) превращаются в редиректы с кодом 302 (Temporary Redirect).
Чем это грозит? Если Вы занимаетесь спамомSEO, то Вы, вероятно, знаете, что переход с кодом 302 не передаёт PageRank. Иными словами, если Вы изменили структуру пермалинков или по той или иной причине в Google "раскручена" страница с несколько другой постоянной ссылкой (например, http://example.com/?p=202), то «канонический редирект» (см. wp-includes/canonical.php) не передаст PageRank целевой странице. Далее »
Мар
2009
Конфигурация nginx для WordPress: критический взгляд со стороны
Update: статья писалась давным-давно, правильная конфигурация nginx для работы с WordPress описана здесь.
Три недели назад я рассказывал про одну из конфигураций nginx для WordPress. С тех пор я получил пару отзывов, что так делать неправильно с ссылкой на конфигурацию, одобренную Игорем Сысоевым (автором nginx). Лежит она здесь:
This has the approval of Igor, the creator – you cannot get better than that.Автор: Vladimir, опубликовано в: nginx, WordPress, комментариев: 1
Дек
2008
WordPress: заменяем Apache mathopd’ом
Вторая статья из серии "WordPress: Заменяем Apache лёгким web-сервером".
Первая статья была посвящена nginx, в данной статье разберём особенности конфигурирования mathopd и WordPress для совместной работы. Далее »
Автор: Vladimir, опубликовано в: WordPress, Администрирование, комментариев: 3Ноя
2008

Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.

