【发布时间】:2021-02-09 21:05:15
【问题描述】:
我正在处理基于Symfony 3.4 的项目,该项目使用WSSE authentication as described in the Symfony docs。
每个 nonce 都作为单独的文件存储在缓存目录 myProject/var/cache/prod/security/nonces 中。问题是,这个目录变得非常非常大。该项目已经启动并运行,nonce 已经使用了将近 20GB 的磁盘空间!
$ cd myProject/var/cache/prod/security/
$ du -sch *
19G nonces
19G total
这对我来说似乎很...我试图弄清楚存储了多少随机数并使用以下命令来计算文件:
$ cd myProject/var/cache/prod/security/nonces
$ find -maxdepth 1 -type f | wc -l
4697417
即使是 470 万个文件,19GB 似乎也差不多。每个文件的大小大约需要 4KB。但是,据我所知,每个文件只有 10B...
$ cd myProject/var/cache/prod/security/nonces
$ ls -lh
-rw-r----- 1 user nobody 10 Jul 25 16:46 'MWFiYWM5YjAiOTRyOWRmZA=='
-rw-r----- 1 user nobody 10 Jul 1 19:41 'MWFiYWNiYTflNTdhLGYwYQ=='
-rw-r----- 1 user nobody 10 Sep 29 11:05 'MWFiYWNkNzEjZfFlCjM0OQ=='
...
我知道文件大小和消耗的磁盘空间之间存在差异。但是,du 也显示了 10B 的磁盘空间:
$ du -sb --apparent-size MWFiYWNkNzEjZfFlCjM0OQ==
10
那么,文件如何使用19G的磁盘空间而每个文件只使用10B呢?我错过了什么吗?还是我没有正确使用命令?
难道没有更好的存储随机数的方法吗?
当然我可以不时删除缓存。但是,这会使随机数变得毫无用处,不是吗?
【问题讨论】:
-
我不了解 WSSE,但磁盘上的大小可能取决于您的磁盘块大小。也许您可以将随机数存储在数据库中?
-
@FabienPapet 谢谢。如问题中所述,我知道由于块大小,文件大小和磁盘空间之间存在差异。但是,使用
du应该会显示消耗的磁盘空间,不是吗? -
我不知道
du的用法,你可以在超级用户网站上试试,他们会有答案 -
Yes
du报告已消耗的磁盘空间。在您的情况下,每个文件 4k,因为 4k 是文件系统的块大小。
标签: symfony caching nonce wsse