Я заметил, что моя папка сеансов PHP заполнена миллионами файлов с одинаковыми данными сеанса. Например, предположим, что это строка длиной 48 байт, содержимое остается прежним.
Предположим, что в / var / tmp / php / sessions примерно 1,5 миллиона таких файлов сеансов.
Если я сделаю математику правильно, 48 байтов * 1500000 файлов / 1024/1024 = 68 МБ примерно.
Но если я сделаю следующее, я получу результат 6G
cd
/var/tmp/php/sessions
du -ch
1) Почему показывает 6G (примерно)? (Возможный ответ в моем втором вопросе ниже)
Дополнительные проверки: Сортировка файлов в порядке убывания размера файла для проверки максимального размера файла. Размер отдельного файла 4k
du -a | sort -n -r | head -n 10
6464600 .
4 ./sess_fffffABCDcdf9c312340f094d165678
Я заменил некоторые символы в названии файла выше.
2) Почему показывает 4к? Это связано с размером блока файловой системы. Теперь использование 6G имеет смысл. Ссылка : https://stackoverflow.com/questions/26666642/why-the-size-of-an-empty-directory-in-linux-is-4kb
3) Если я использую Redis в качестве дескриптора сеанса для PHP, он определенно будет быстрее, чем диск, но теоретически будет ли он использовать только около 68 МБ данных в ОЗУ, плюс, возможно, некоторые накладные расходы?
4) Пытается ли Redis уменьшить фактическое использование памяти, если значения, хранящиеся в нем, одинаковы, то есть одно и то же значение повторяется 1,5 миллиона раз для разных ключей сеанса?
У меня нет контроля над сеансом и его данными, и я не могу предотвратить создание сеансов или удалить их содержимое, даже если оно повторяется.
Я ищу подтверждения по первым двум вопросам и немного дополнительных пояснений со ссылками на вопросы 3 и 4, если возможно.