Pull to refresh

Как opcache портил мою жизнь и тратил мои нервы

Reading time2 min
Views21K
Jackie-Chan_opcache

Все началось с апдейта php, давным давно и в этой же самой галактике. И с того момента меня преследовала одна мерзкая проблема, которая портила мне жизнь на протяжении достаточно длительного времени.

Я использую php лишь для нескольких сайтов: блог на wordpress, форум на phpbb и небольшой сайтик на modx. Сие работает в связке nginx + php-fpm. Apache я принципиально не использую, так как nginx умеет все. У каждого fpm своя учетка, своя home, все зарезано и перерезано, чтобы только работало радовало мою параною.

И вот после того самого древнего апдейта начались странности. При открытии одного из сайтов и последующем открытии другого сайта я получал ошибку от предыдущего.

То есть при открытии сайта на phpbb и следом сайта на modx я видел ошибку о неустановленном блоке от phpbb, при открытии сайта на modx и следом блога на wordpress я видел привет 503 от modx. Как будто каким-то странным образом один fpm поток получал доступ к скриптам с другого, работающего в другой директории, другом порте, другом юзере в другой группе…

С того момента утекло много воды, конфигурации nginx были переписаны несколько раз, fpm'ы менялись, использовал .sock вместо порта. Результат был один и тот же — при быстром открытии двух разных сайтов ответ был от пергого, а второй мне выдавай глюк движка первого сайта.

Если бы сайты были популярные, я бы подсуетился с поиском решения, но форум висел полумертвый, блог посещает несколько человек как и modx. И вот пару дней назад, будучи в рабочем настронии и наводя порядок на сервере нагуглил интересную статью How To Host Multiple Websites Securely With Nginx And Php-fpm On Ubuntu 14.04.

И именно эта цитата прояснила мне «who is ху..»:
Amazingly, if you run again the test steps in the exactly the same order, you'll be able to read the sensitive file regardless of its ownership and permission. This problem in opcache has been reported for a long time, but by the time of this article it has not been fixed yet.

Я сказал себе: «значит это opcache колбасит мои fpm'ы последние 7 месяцев, суя куда не попадя свой кеш и снося башню несччастным CMS'ам!»

Последовала небольшая правка opcache.enable=0

и… проблема исчезла. Ее больше нет. Три несчастных сайта радостно рабоют, сервер мерно сопит в 384 дырки вентиляционного отверсия, а я чуть коснулся нирваны и даже прослушал пару треков.

Что я потерял с отключением opcache? opcache. Как это сказалось на моем перфомансе? Никак. Я использую кеш nginx, на сервере raid, а 8 ядер загружены в среднем на 5-10%. Так что лишний парсинг php скриптов ресурсов не съест. А визуально ничего не тормозит, в том числе и под нагрузочными тестами.

Частный случай? Может быть. Уже не багает? Вполне. Почему не php7? Потому, что. Апдейтить? Неа в топку, я на JSP код пишу.
Tags:
Hubs:
-14
Comments73

Articles