CentOS可以在一个目录中处理的最大文件数量?


1

我为一个视频搜索网站写了一个非常快速和脏的缓存系统,它在隐藏的“/ cache /”目录中gzips并缓存搜索结果。

在最初几个月,一切都进展顺利,直到我开始注意到非常受欢迎的搜索结果没有显示任何视频。

我查看了缓存文件夹,果然,它是粉笔 - 大约有30,000个缓存文件,其中许多现在正在创建,其中没有内容...即使是非常受欢迎的搜索术语。

我删除了大约10,000个缓存文件(超过1个月,或者结果为空),现在一切似乎都恢复正常。

显然我不得不在不久的将来编写一个合适的MySQL缓存系统,但是一个目录中的大量文件是否会导致CentOS打嗝呢?

也许拉一个缓存的文件并解压缩它太多了?

我有一个机制,每当下载不顺利时就会发出警告。bing服务器没有阻止我,我确实正在服务结果,当缓存文件夹中的文件数量“太大”时,我只是无法缓存它们(有时)。

欢迎所有的想法/意见!

Answers:


2

这取决于您使用的文件系统类型。我相信ext2和ext3仅限于32000个子文件夹(你可以拥有那么多或更多的文件,但性能会受到影响......); ext4两倍,其他一些允许更多或无限数量。有关各种linux文件系统类型的讨论和答案,请参阅服务器故障上的此问题


谢谢你frabjous,是的我相信在那个特定的缓存文件夹中有大约32,000个文件,所以这可能是罪魁祸首。一旦我有15个代表,我会投票给你!
darkAsPitch 2010年

你可以在这里
phuclv 2014年

0

我在FC7和Ubuntu上看到了相反的情况,目录处理超过100K的文件没有问题。相反,当子目录的数量是32K或更多时存在问题 - 但不仅仅是文件。

既然你说这个解决方案“非常快速和肮脏”,那么问题可能不在CentOS中而是在你的代码中?甚至用你正在使用的语言?你的代码是否可能试图一次性打开所有这些文件,以便它用完文件句柄或某些此类资源?


我想这更像是一种“保持简单愚蠢”的方法。代码是用PHP编写的。它检查缓存文件上的文件时间,如果没有找到或文件太旧,它会从bing中检索新信息。我认为这个32,000的数字似乎是正确的。我不能说我删除了多少个文件,可能大约12,000个 - 现在缓存文件夹中还有2万个,所有内容都运行良好所以..我最好的猜测到目前为止是神奇的数字32.
darkAsPitch 2010年

@darkAsPitch:两件事:[1]都是frabjous,我说32K限制是子目录,而不是文件。您是否使用每个缓存条目的子目录?[2]我在frabjous之前二十分钟指出了这一点。我很好奇你为什么愿意投票而不是这个?
Beel 2010年

0

真正的答案与Bing的劣质API有关 - 请参阅官方bing API 2.0论坛上的这个主题:http//www.bing.com/community/Developer/f/12254/t/662869.aspx

基本上,他们随机隐藏随机搜索查询的结果 - 迫使您按照从他们那里获取信息所需的两倍的速度击中他们的服务器。由于很多时候“无结果”的响应确实会产生结果,因此您必须再次检查。

感谢大家的投入!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.