Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Как мы переезжали на PHP7

Ответы на два вопроса из поста про Амстердам:
- "нет-нет" и "нет-да" на почтовых ящиках это типа "не совать газеты" и "совать/не совать спам".
- крюк под крышей нужен для подъёма мебели в квартиру. Места в Амстрдаме не очень много, так что его экономят. Ну, по крайней мере, раньше экономили, до введения каких-то строительных норм, которые запрещают делать лестницы с углом подъёма в 60 градусов и подъезды, где с трудом расходятся два человека.

Так что все комментаторы были совершенно правы.

Теперь про переезд на PHP 7.0 с версии 5.6. У нас есть проект с небольшой посещаемостью, около 1000 посещений в минуту. Тем не менее, там работают шесть серверов, хотя и один справился бы легко. Это надо, чтоб нормально работал кластер редиса. Ну и иногда заходят боты, начинают индексировать сайт, там лучше, когда сервер всё же не один нагрузку принимает.

Ой, кластер редиса это тоже такая жопа. Экономия памяти, конечно, существенная - если раньше каждый сервер хранил у себя свою копию данных в памяти, то теперь она размазана по кластеру, по трём мастерам и трём слейвам. Это означает, что сервера постоянно дёргают друг друга, если у себя не находят нужный ключ. А ключи бывают по мегабайту у нас - справочник всех свойств по всем категориям, например. Чтоб не прогибалась сеть, мы всё равно используем локальное хранилище для этих монструозных ключей. На PHP 5.6 был xcache. Но в седьмом пхп икскэша нет.

И с самим редисом была засада ещё та. Мы использовали стандартное пекловское расширение PhpRedis, которое предоставляет классы Redis и RedisCluster. Версия для пхп 7, как выяснилось, работает нестабильно. Примерно 0,2% всех посещений вызывают ошибку, причём это fpm падает в segfault, отдавая 502. Выкинули на хер, я заменил на PRedis. Это pure-PHP код для работы с редисом через сокеты. Нареканий нет.

Проблемы были с локальным кэшированием. Так как икскэша нет, начали искать альтернативы. Пробовали мемкэш, собрали библиотеку для работы с ним в пхп 7 руками. Не покатило, падает, надёжности никакой. Я уже собирался использовать shared memory, но потом решили, что будет ещё один локальный редис на каждом сервере. Так и живём с кучей редисов теперь.

Итого: насколько выросла производительность, мне неизвестно. По ощущениям, нинасколько, я не заметил никакого прироста. Надёжность работы, напротив, снизилась, уменьшилась стабильность. Зато сколько времени и сил угробили на переезд и все эти эксперименты! На фиг обновлялись, ещё бы годик пожили на 5.6, ничего бы не случилось.

Оригинал записи http://blog.axshavan.cz/2016/08/php7.html
Tags: web, работа
Subscribe

  • Хотел написать, как дела, а получилось про полосы вторжения

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

  • Про политику

    Многие сравнивают события так называемой "Крымской весны", когда весной этого (2014) года Российская Федерация, воспользовавшись бедственным…

  • Lidice

    Конечно, я мог бы молча краснеть от стыда и надеяться, что никто ничего не заметит, но лучше я всё-таки напишу уточнение-опровержение, или как это…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 10 comments

  • Хотел написать, как дела, а получилось про полосы вторжения

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

  • Про политику

    Многие сравнивают события так называемой "Крымской весны", когда весной этого (2014) года Российская Федерация, воспользовавшись бедственным…

  • Lidice

    Конечно, я мог бы молча краснеть от стыда и надеяться, что никто ничего не заметит, но лучше я всё-таки напишу уточнение-опровержение, или как это…