WP Super Cache и высокая нагрузка

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

Проблема: PHP случайным образом перестаёт реагировать на внешние запросы.

Сайт работает на WordPressWP SuperCache), web-сервером стоит nginx, php-fpm с 40 дочерними процессами висит в режиме FastCGI. Довольно-таки стандартная конфигурация.

Иногда (периодичность не ясна) сайт падает. В том плане, что nginx выдаёт ошибку 502 Bad Gateway. При этом в логах отображается примерно такое:

[-]
View Code Text
2009/03/23 00:50:57 [error] 29289#0: *1821923 connect() to unix:/dev/shm/php-fcgi-XXX.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 195.10.218.132, server: example.org, request: "GET /wp-login.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi-XXX.sock:", host: "example.org"

Лечится только перезапуском php-fpm. Далее

23
Март
2009

GCC: извращения с вращением

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

Неоднократно встречаю такие объявления в заголовочных файлах (это особенно характерно для всяких «домашних» криптографических библиотек):

[-]
View Code C
inline uint32_t rol(uint32_t x, uint8_t shift)
{
#if defined(__GNUC__) && defined(__i386__)
    __asm__("roll %%cl,%0" :"=r" (x) :"0" (x),"c" (shift));
    return x;
#else
    return (x < < shift) | (x >> (32 - shift));
#endif
}

Так вот: так делать не надо. Далее

22
Март
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

Специалисты Intel рекомендуют задавать маску соответствия процессоров (известную как CPU affinity mask) для потоков OpenMP, чтобы привязать поток к определённому процессору (или ядру процессора, что в данном случае одно и то же). Как утверждается, это позволяет минимизировать миграцию потоков и снизить стоимость переключения контекста между процессорами.
Далее

16
Март
2009
[-]
View Code Bash
CHARS="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()-_=+\\|/"
LENGTH="8"
while [ "${n:=1}" -le "$LENGTH" ] ; do
    PASSWORD="$PASSWORD${CHARS:$(($RANDOM%${#CHARS})):1}"
    let n+=1
done

Далее

15
Март
2009