Обнаружена блокировка сессий в PHP

123
K
На сайте с 26.02.2016
Offline
38
#11

короче beget мутит воду? чтобы потом вынудить перейти на тарифы выше?

il_cattivo
На сайте с 25.06.2016
Offline
63
#12
Koan:
короче beget мутит воду? чтобы потом вынудить перейти на тарифы выше?

Блокировка сессий в PHP не зависит от тарифа и хостинга. Они предлагают установить Redis как решение. На одном из сайтов, с 23 по утро 25, блокировка составила 18 секунд- 4 раза по 4-5 секунд. Нечего парится.

S4
На сайте с 26.07.2007
Offline
183
#13
Koan:
короче beget мутит воду? чтобы потом вынудить перейти на тарифы выше?

Короче, вам здесь уже объяснили что к чему и дали ссылку с подробностями.

Если все равно до сих пор не доходит, то просто напишите в Бигет чтобы они отключили вам эти сообщения, тогда все у вас будет выглядеть как на обычном "хостинге" и вы наверное перестанете по этому поводу париться))

Проверенные KVM NVMe VPS ( https://hosthatch.com/a?id=200 ) в Нидерландах, Швеции, Норвегии, Австрии и США с гарантированным ресурсом CPU - от $2,5/м за 1GB RAM, 10GB NVMe SSD Пожалуй, лучший веб-хостинг в России ( https://beget.com/p415216 ) (30 дней на тест)
S
На сайте с 12.10.2012
Offline
202
#14

У меня на одном из сайтов при переезде на бегет, тоже стало вылетать такое сообщение. Система управления сайта HostCMS. На этой cms при быстром серфе сайта действительно вылетала ошибка блокировки сессии и решалось только перезагрузкой страницы. Ошибок в самой CMS или в шаблоне мы не нашли, так что предполагаю это коллизия настроек сервера хостера и CMS. Подключив редис ошибки и блокировки пропали.

Так что, если у вас блокировок в сутки меньше 1 мин, то можно ничего и не делать.

Если блокировок больше, то используйте редис или переезжайте на другой хостинг.

A
На сайте с 20.09.2008
Offline
131
#15

Пожалуй я еще раз скопирую сообщение сюда:

-------------------------------

По блокировке сессий, откровенно говоря это функционал которым я горжусь, так как такого больше не у кого нету. Суть проблемы в следующем: делаем скрипт который открывает сессию и делает там sleep(100), открываем его в двух вкладках и внимательно смотрим как долго у нас открывается вторая вкладка.

При этом так называемые "тормоза сайта" не будут связаны не с мощностью сервера, не с потребляемыми ресурсами или лимитами. В свое время мы написали небольшое расширение для php, которое отлавливает эту ситуацию и сделали микросервис Redis в котором можно хранить сессии. Нельзя сказать, что решение отличное - так как возможны ситуации с неконсистентностью данных, то есть когда один процесс меняет данные пока второй работает с этими данными, но это бывает редко и в подавляющем ряде случаев не вызывает проблем.

Это не как не связанно с нагрузкой на сайт и даже если Вы перенесете сайт от нас - проблема останется, только об ее существовании Вам не кто не скажет.

Ниже ссылки на которых можно прочесть о проблеме:

https://dev.1c-bitrix.ru/learning/co...LESSON_ID=2687

https://beget.com/ru/articles/redis_session

http://php.net/manual/ru/session.examples.basic.php

https://habrahabr.ru/company/bitrix/blog/179803/

Если Bitrix пишет о проблеме на habre - почему бы нам не уведомить клиентов о том, что такая проблема есть и не решить ее ? Наверное это вопрос из серии - зачем предупреждать пользователей о вирусах на их сайте ? Или о том, что запросы к БД блокируют друг друга и сайт открывается по 10 секунд ?

Я не могу сказать, что Redis для хранения сессий пользуется большой популярностью - но для тех кому он действительно нужен это очень хорошая фича.

-- С Уважением Алексей Маникин.
S
На сайте с 12.10.2012
Offline
202
#16
alexeyymanikin:
Пожалуй я еще раз скопирую сообщение сюда:

-------------------------------

По блокировке сессий, откровенно говоря это функционал которым я горжусь, так как такого больше не у кого нету. Суть проблемы в следующем: делаем скрипт который открывает сессию и делает там sleep(100), открываем его в двух вкладках и внимательно смотрим как долго у нас открывается вторая вкладка.

При этом так называемые "тормоза сайта" не будут связаны не с мощностью сервера, не с потребляемыми ресурсами или лимитами. В свое время мы написали небольшое расширение для php, которое отлавливает эту ситуацию и сделали микросервис Redis в котором можно хранить сессии. Нельзя сказать, что решение отличное - так как возможны ситуации с неконсистентностью данных, то есть когда один процесс меняет данные пока второй работает с этими данными, но это бывает редко и в подавляющем ряде случаев не вызывает проблем.

Это не как не связанно с нагрузкой на сайт и даже если Вы перенесете сайт от нас - проблема останется, только об ее существовании Вам не кто не скажет.

Ниже ссылки на которых можно прочесть о проблеме:

https://dev.1c-bitrix.ru/learning/co...LESSON_ID=2687
https://beget.com/ru/articles/redis_session
http://php.net/manual/ru/session.examples.basic.php
https://habrahabr.ru/company/bitrix/blog/179803/

Если Bitrix пишет о проблеме на habre - почему бы нам не уведомить клиентов о том, что такая проблема есть и не решить ее ? Наверное это вопрос из серии - зачем предупреждать пользователей о вирусах на их сайте ? Или о том, что запросы к БД блокируют друг друга и сайт открывается по 10 секунд ?

Я не могу сказать, что Redis для хранения сессий пользуется большой популярностью - но для тех кому он действительно нужен это очень хорошая фича.

Скажите почему возникает очень много блокировок сессий на связке HostCMS и бегет. Т.е в шаблоне или самой CMS косяк?

Если я перенесу сайт на другой хостинг блокировка останется, 100% вероятность?

M
На сайте с 17.09.2016
Offline
124
#17

Так устроена работа сессий в php

По дефолту это сброс данных в ФС (в файлы)

При запуске session_start() происходит блокировка сессии с помощью LOCK_EX эксклюзивной блокировки файла

Если в этот же момент приходит ещё один запрос, то второй раз блокировку уже не поставить, и PHP ждёт, пока ему дадут LOCK_EX на файл пользовательской сессии

Разблокировка происходит по session_write_close(), которую можно либо в скрипте вызвать, либо она сама вызывается по окончании работы скрипта

============

Технически разница будет при смене хостинга/сервера и т.д.

Но это будут микросекунды, которые нереально заметить

Так что смена хостинга не решит проблему с сессиями

И проблема кроется в коде CMS

Зачастую это CMS/плагины с ajax запросами

Когда первый запрос долго что-то делает, а следующие строят тонны очередей

S4
На сайте с 26.07.2007
Offline
183
#18
sagamorr:
Скажите почему возникает очень много блокировок сессий на связке HostCMS и бегет. Т.е в шаблоне или самой CMS косяк?
Если я перенесу сайт на другой хостинг блокировка останется, 100% вероятность?

Здесь не техподдержка Бигета, да и от совладельца вряд ли уместно ожидать ответов на подобные вопросы.

ENELIS
На сайте с 29.08.2008
Offline
194
#19
Mobiaaa:
Так устроена работа сессий в php
По дефолту это сброс данных в ФС (в файлы)
При запуске session_start() происходит блокировка сессии с помощью LOCK_EX эксклюзивной блокировки файла
Если в этот же момент приходит ещё один запрос, то второй раз блокировку уже не поставить, и PHP ждёт, пока ему дадут LOCK_EX на файл пользовательской сессии
Разблокировка происходит по session_write_close(), которую можно либо в скрипте вызвать, либо она сама вызывается по окончании работы скрипта
============
Технически разница будет при смене хостинга/сервера и т.д.
Но это будут микросекунды, которые нереально заметить
Так что смена хостинга не решит проблему с сессиями
И проблема кроется в коде CMS
Зачастую это CMS/плагины с ajax запросами
Когда первый запрос долго что-то делает, а следующие строят тонны очередей

Интересно, а в Redis как эта блокировка обходится? Если изменение не будет атомарным, то будут коррапт данные или что еще хуже возможна утечка данных. Разница только в том, что Redis как и memcache держат это в памяти. Такие проблемы говорят о медленной ФС и дисках под ФС, раз IO заставляет ждать так долго.

С Уважением, ServerAstra.ru (https://serverastra.com) - VPS и выделенные сервера в Будапеште по выгодным ценам!
M
На сайте с 17.09.2016
Offline
124
#20

ENELIS, для redis тоже можно реализовать блокировки

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий