Працюючи веб-сервера відбувається генерація величезної кількості дрібних файлів для сесій. Кількість таких файлів може досягати багато мільйонів на добу. Як результат, рано чи пізно вичерпується ліміт кількості файлів і система дає збій. Доводиться перестворювати каталог та видаляти старі сесії. Видалення такої кількості сесій може створювати дуже високе навантаження на сервер, заважаючи комфортній роботі користувачів, а процес видалення може відбуватися багато діб. Можу припустити, що такі дрібні записи дуже корисні для вінчестерів.
Як миттєво видаляти файли сесій те щоб цього не помічали користувачі ?
Для цього можна скористатися записом інформації про сесії на диск у пам'яті. Такий диск миттєво очищається і працює до тих пір, поки не вимкнеться живлення сервера або поки розмаунтиться диск.
На серверах останнім часом багато оперативної пам'яті, тому робота з дисками в пам'яті – чудове вирішення проблеми. При цьому відбувається відчутно менше навантаження на дискові накопичувачі, дискові накопичувачі довше служать і система в цілому працює відчутно швидше.
Поділюсь досвідом, як реалізував побудову дисків у себе на серверах.
Створюю BASH-файл create_ramdisk для створення диска:
#!/bin/bash
mkdir /sessions
chmod 777 /sessions
mount -t tmpfs -o size=32G tmpfs /sessions
Створюю BASH-файл del_ramdisk для видалення диска з пам'яті:
del_ramdisk
Створюю BASH-файл recreate для перестворення диска:
#!/bin/bash
umount /sessions
В /etc/crontab добавляю строчку:
00 3 * * * root /fw/ramdisk/recreate
Робимо симлінк з каталогу /sessions у /var/lib/php/sessions. Де зазвичай складаються сесії.
Автор: Рудюк С.А. 2023. K2 Cloud ERP.