Jump to content

  • You cannot start a new topic
  • You cannot reply to this topic

Сессии В Redis И Время Жизни Корзины Rate Topic   - - - - -

 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 01:01 PM #1

Всем привет.

Решил навести порядок на сервере, в меру своих способностей. Заодно побороть давнейшую неприятную особенность (или глюк?). В чем нуждаюсь в помощи знающих.

Итак, в попытках ускорить сайт храню сессии в Редис. Я в курсе, что смысла в этом мало, но - тем не менее, это так.

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

Как я полагаю, сессия должна жить +2 недели от последнего посещения данного юзера, на практике же это не всегда так. Я проводил эксперимент на своей машине в разных браузерах - корзина может прожить и неделю и две, а может вдруг ХРЯСЬ - и через день опустеть.

Как я понял, происходит этот в тот момент, когда перезагружается сервер. В итоге все сессии (Редис же держит их в ОЗУ?) слетают

.
Однако в настройках Редис есть

save 900 1
save 300 10
save 60 10000

На диске есть база

/var/redis/6379/dump.rdb - весит 18 мегов (не много ли???) и дата ее - сегодняшним числом. Права к базе 644 (может на 777 сменить?)

В логах есть записи

1309:M 31 Jan 04:38:09.029 * 10 changes in 300 seconds. Saving...
1309:M 31 Jan 04:38:09.032 * Background saving started by pid 19469
19469:C 31 Jan 04:38:09.617 * DB saved on disk
19469:C 31 Jan 04:38:09.621 * RDB: 0 MB of memory used by copy-on-write

То есть база сохраняется без ошибок (правда почему 0 МВ???).

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

Плиз, помогите, ЧЯДНТ?



 
  • a.shishkin
  • Member
  • Trial users
  • Join Date: 18-Jan 18
  • 18 posts

Posted 31 January 2018 - 05:04 PM #2

Всем привет.

Решил навести порядок на сервере, в меру своих способностей. Заодно побороть давнейшую неприятную особенность (или глюк?). В чем нуждаюсь в помощи знающих.

Итак, в попытках ускорить сайт храню сессии в Редис. Я в курсе, что смысла в этом мало, но - тем не менее, это так.

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

Как я полагаю, сессия должна жить +2 недели от последнего посещения данного юзера, на практике же это не всегда так. Я проводил эксперимент на своей машине в разных браузерах - корзина может прожить и неделю и две, а может вдруг ХРЯСЬ - и через день опустеть.

Как я понял, происходит этот в тот момент, когда перезагружается сервер. В итоге все сессии (Редис же держит их в ОЗУ?) слетают

.
Однако в настройках Редис есть

save 900 1
save 300 10
save 60 10000

На диске есть база

/var/redis/6379/dump.rdb - весит 18 мегов (не много ли???) и дата ее - сегодняшним числом. Права к базе 644 (может на 777 сменить?)

В логах есть записи

1309:M 31 Jan 04:38:09.029 * 10 changes in 300 seconds. Saving...
1309:M 31 Jan 04:38:09.032 * Background saving started by pid 19469
19469:C 31 Jan 04:38:09.617 * DB saved on disk
19469:C 31 Jan 04:38:09.621 * RDB: 0 MB of memory used by copy-on-write

То есть база сохраняется без ошибок (правда почему 0 МВ???).

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

Плиз, помогите, ЧЯДНТ?

Скорее всего редис тут не причем, я посмотрел - у нас настройки такие же.

 

Мы сделали куку просто бессмертной у себя, по аналогии с vk, fb и прочими. 

В чем может быть дело у вас? Когда будете делать подобный эксперимент, посмотрите не меняется ли session_id в куках на фронте. Дело в том, что она ставится на 2 недели, когда кинули товар в корзину, ей осталось жить как раз день. Мы эту куку регулярно рефрешим, чтобы она не умирала. Вам я думаю нужно делать примерно также.

 

18 мб это совсем немного, у нас в десятки раз больше.



 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 05:20 PM #3

Скорее всего редис тут не причем, я посмотрел - у нас настройки такие же.

Мы сделали куку просто бессмертной у себя, по аналогии с vk, fb и прочими.
В чем может быть дело у вас? Когда будете делать подобный эксперимент, посмотрите не меняется ли session_id в куках на фронте. Дело в том, что она ставится на 2 недели, когда кинули товар в корзину, ей осталось жить как раз день. Мы эту куку регулярно рефрешим, чтобы она не умирала. Вам я думаю нужно делать примерно также.

18 мб это совсем немного, у нас в десятки раз больше.


Все хорошо, но я же тупой. Я не знаю как эту куку посмотреть. (Ее выйди то бишь) и уж тем более как ее обессмертить.

 
  • a.shishkin
  • Member
  • Trial users
  • Join Date: 18-Jan 18
  • 18 posts

Posted 31 January 2018 - 05:25 PM #4

Все хорошо, но я же тупой. Я не знаю как эту куку посмотреть. (Ее выйди то бишь) и уж тем более как ее обессмертить.

 

В хроме есть удобное расширение EditThisCookie, вот там можно увидеть список кук, которые есть на сайте.



 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 05:31 PM #5

В хроме есть удобное расширение EditThisCookie, вот там можно увидеть список кук, которые есть на сайте.


Попробую. У меня есть old fashioned магазин, там сессии в файлах, и все работает норм. И с куками не заморачиваюсь. А с этим цс-картом, когда куки тоже были в файле, тоже вроде все норм было.
Да и кажется мне, когда сервак перезагружаешь - вот тогда и отваливаются сессии.

 
  • a.shishkin
  • Member
  • Trial users
  • Join Date: 18-Jan 18
  • 18 posts

Posted 31 January 2018 - 05:33 PM #6

Попробую. У меня есть old fashioned магазин, там сессии в файлах, и все работает норм. И с куками не заморачиваюсь. А с этим цс-картом, когда куки тоже были в файле, тоже вроде все норм было.
Да и кажется мне, когда сервак перезагружаешь - вот тогда и отваливаются сессии.

Когда именно сервер вполне может быть, мы вообще думаем редис выкинуть, он не сильно помогает при высокой нагрузке. Если у вас не так много трафика (судя по 18мб) смело ставьте вообще в БД. Там итак на каждой странице куча запросов, еще парочка не испортит ситуации.



 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 05:49 PM #7

Когда именно сервер вполне может быть, мы вообще думаем редис выкинуть, он не сильно помогает при высокой нагрузке. Если у вас не так много трафика (судя по 18мб) смело ставьте вообще в БД. Там итак на каждой странице куча запросов, еще парочка не испортит ситуации.

Только когда сервер.

 
  • a.shishkin
  • Member
  • Trial users
  • Join Date: 18-Jan 18
  • 18 posts

Posted 31 January 2018 - 05:50 PM #8

Только когда сервер.

Я думал, что у вас проблемы когда redis server перегружается.

 

Ставьте в БД хранилище ) я думаю все нормально у вас будет.



 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 06:19 PM #9

Я думал, что у вас проблемы когда redis server перегружается.

 

Ставьте в БД хранилище ) я думаю все нормально у вас будет.

 

Черт, глянул в конфиг, ау меня COOKIE_ALIVE_TIME = 1 неделя, когда SESSION_ALIVE_TIME и SESSIONS_STORAGE_ALIVE_TIME = 2 недели... Как я понял, первое убивает два вторых... Вот почему походу у меня раз в неделю заново в админке валюта сбрасывается...

 

Перезагрузка сервера раз в месяц может происходит, вероятность с моей посещаемостью что именно в этот момент кто-то в корзину накидает тыщ на 10 хотя бы (тогда по памяти не восстановить) крайне мала.

 

Продолжаю наблюдение.

 

В БД не хочу пихать, и так блин цс-карт адски тормозной, причем именно из-за работы с БД...

 

Кстати, нашел тут костыль который ускорит время ответа сервера у меня вдвое... Пока правда нет статистики, только сегодня его применил.



 
  • a.shishkin
  • Member
  • Trial users
  • Join Date: 18-Jan 18
  • 18 posts

Posted 31 January 2018 - 06:29 PM #10

Черт, глянул в конфиг, ау меня COOKIE_ALIVE_TIME = 1 неделя, когда SESSION_ALIVE_TIME и SESSIONS_STORAGE_ALIVE_TIME = 2 недели... Как я понял, первое убивает два вторых... Вот почему походу у меня раз в неделю заново в админке валюта сбрасывается...

 

Перезагрузка сервера раз в месяц может происходит, вероятность с моей посещаемостью что именно в этот момент кто-то в корзину накидает тыщ на 10 хотя бы (тогда по памяти не восстановить) крайне мала.

 

Продолжаю наблюдение.

 

В БД не хочу пихать, и так блин цс-карт адски тормозной, причем именно из-за работы с БД...

 

Кстати, нашел тут костыль который ускорит время ответа сервера у меня вдвое... Пока правда нет статистики, только сегодня его применил.

Чтобы база задышала попробуйте VPS с SSD диском, заметно веселее.



 
  • kaavain
  • Senior Member
  • Members
  • Join Date: 22-Nov 14
  • 1,102 posts

Posted 31 January 2018 - 06:31 PM #11

Чтобы база задышала попробуйте VPS с SSD диском, заметно веселее.

 

Я понимаю, но так сложилось что нет SSD там где я хощусь... Правда и цена - 2 евро в месяц... Может с подоблюсь как оплаченные 2 года закончатся.



 
  • zoldat
  • Senior Member
  • Members
  • Join Date: 24-Nov 16
  • 593 posts

Posted 11 February 2018 - 01:49 PM #12

 

Кстати, нашел тут костыль который ускорит время ответа сервера у меня вдвое... Пока правда нет статистики, только сегодня его применил.

 

Поделитесь "костылем", пожалуйста!