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

Categories:

Как мы переезжали на 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

  • Настроение

    Выпил граммов двадцать крепкого спиртного для общего расслабления нервной системы. Потом поиграл на гитаре, напевая самым противным голосом, какой…

  • Размышления про материалы

    Восседая на троне в специальной комнате, я призадумался о свойствах туалетной бумаги и о том, чем можно её заменить. Очень часто бывает, знаете, что…

  • Dracula

    Вчера вечером наконец-то дочитал до конца «Дракулу» на английском. Правильнее будет сказать «продрался до конца». Чтоб я да ещё да какую-нибудь…

  • 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

  • Настроение

    Выпил граммов двадцать крепкого спиртного для общего расслабления нервной системы. Потом поиграл на гитаре, напевая самым противным голосом, какой…

  • Размышления про материалы

    Восседая на троне в специальной комнате, я призадумался о свойствах туалетной бумаги и о том, чем можно её заменить. Очень часто бывает, знаете, что…

  • Dracula

    Вчера вечером наконец-то дочитал до конца «Дракулу» на английском. Правильнее будет сказать «продрался до конца». Чтоб я да ещё да какую-нибудь…