Дисковые inodes заполнены из-за сессий PHP

Мы боремся с этой проблемой уже более 2 лет. У нас есть интернет-магазин, который использует сеансы PHP для хранения пользовательских корзин и другой информации. Проблема в том, что через некоторое время на сервере закончатся дескрипторы диска, даже если на диске сервера останется много свободного места. Затем произойдет сбой всего сервера, потому что мы не сможем ничего записать на диск.

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

Как можно решить эту проблему?Запись сеансов PHP в базу данных потребовала бы слишком большого количества серьезных изменений кода, и мы не можем увеличить количество inode, не начав заново с другого сервера.

У нас уже есть задание cron для удаления файлов сеансов, которые не были изменены за последний месяц, но этого недостаточно, и поскольку веб-сайт продолжает расти, проблемы с inode возникают все чаще.

0
задан 11 August 2019 в 20:36
3 ответа

ઝેબ્રા સત્ર, PHP ના ડિફ defaultલ્ટ સત્ર હેન્ડલિંગ કાર્યો માટે રેપર તરીકે કાર્ય કરે છે, પરંતુ સ્ટોર કરવાને બદલે ફ્લેટ ફાઇલોમાં સત્ર ડેટા, તે તેમને માયએસક્યુએલ ડેટાબેસમાં સંગ્રહિત કરે છે, વધુ સારી સુરક્ષા અને સારી કામગીરી પ્રદાન કરે છે [१२૨૨] તે પીએચપીના ડિફોલ્ટ સત્ર હેન્ડલર માટે ડ્રોપ-ઇન અને સીમલેસ રિપ્લેસમેન્ટ છે: પીએચપી સત્રોનો ઉપયોગ તે પહેલાંની જેમ જ કરવામાં આવશે. પુસ્તકાલય; તમારે કોઈપણ અસ્તિત્વમાં છે તે કોડ બદલવાની જરૂર નથી!

https://github.com/stefangabos/Zebra_Session

બરાબર હું જે શોધી રહ્યો હતો.

બીજો ઉપાય: https: // સ્ટેકઓવરફ્લો. કોમ / પ્રશ્નો / 36753513 / કેવી રીતે કરો-આઇ-સેવ-પીએચપી-સેશન-ડેટા-થી-એ-ડેટાબેઝ-તેના-બદલે-ફાઇલ-સિસ્ટમ-માં-સિસ્ટમ-

1
ответ дан 4 December 2019 в 11:41

С точки зрения системы, на реальном оборудовании решение состоит в том, чтобы создать новую файловую систему с другим inode_ratio или даже новым типом файловой системы, которая предназначена для большого количества небольших файлов. Ваш хостинг-провайдер может предоставлять или не предоставлять эту функциональность, если вы используете облачное, а не размещенное в одном месте HW или «выделенные» VPS. СМ. РЕДАКТИРОВАТЬ НИЖЕ

Если вы можете изменить код системы покупок, вам следует сохранить тележки для зарегистрированных пользователей в базе данных, позволить сеансу истечь как обычно и очистить старые файлы сеанса. Сеансы должны иметь относительно короткий срок службы, а файлы сеансов должны регулярно очищаться / удаляться для старых неактивных сеансов.

Хранение информации в базе данных имеет множество преимуществ - как технологических (проще разделить нагрузку на веб-сервер по CDN). и в деловых целях (письма «эй, у вас уже давно был этот предмет в вашем списке желаний, и его почти нет в наличии - купите сейчас!», заставляли меня открывать свой кошелек более одного раза), и это направление, в котором я возглавит. Но по крайней мере начните удалять старые файлы сеансов с истекшим сроком действия ....

Edit to add -

Один из хитрых способов получить новую FS - создать разреженный файл подходящего размера, отформатировать его с помощью файловой системы по выбору, и смонтируйте его на установке с обратной связью. Конечно, для этого вам понадобится достаточно места и т. Д.

3
ответ дан 4 December 2019 в 11:41

Должна быть возможность перенести файлы сеанса PHP на новый сервер.

Предполагается, что стоит потратить усилия на переход на новый сервер, на котором есть ресурсы (inodes), которые могут справиться с ожидаемым ростом трафика в течение приемлемого периода времени.

Файлы сеанса хранятся в настройке session.save_path в php.ini .

0
ответ дан 4 December 2019 в 11:41

Теги

Похожие вопросы