Maximale Anzahl von Dateien, die CentOS in einem Verzeichnis verarbeiten kann?


1

Ich habe ein furchtbar schnelles und schmutziges Caching-System für eine Videosuch-Website geschrieben, das die Suchergebnisse in einem versteckten "/ cache /" -Verzeichnis zwischenspeichert.

In den ersten Monaten lief alles reibungslos, bis ich sehr beliebte Suchergebnisse bemerkte, in denen keine Videos angezeigt wurden.

Ich habe in den Cache-Ordner geschaut, und tatsächlich war er voller Kreide mit ungefähr 30.000 zwischengespeicherten Dateien, von denen viele jetzt ohne Inhalt erstellt werden ... selbst für sehr beliebte Suchbegriffe.

Ich habe ungefähr 10.000 Cache-Dateien gelöscht (die älter als 1 Monat waren oder in Bezug auf die Ergebnisse leer) und jetzt scheint alles wieder reibungslos zu funktionieren.

Natürlich muss ich in naher Zukunft ein richtiges MySQL-Cache-System schreiben, aber könnte diese große Anzahl von Dateien in einem Verzeichnis dazu führen, dass CentOS überhaupt Schluckauf bekommt?

Vielleicht ist es einfach zu viel, eine zwischengespeicherte Datei zu ziehen und zu entpacken?

Ich habe einen Mechanismus, der mich warnt, wenn ein Download nicht reibungslos verläuft. Der Bing-Server blockiert mich nicht, mir werden tatsächlich Ergebnisse zugestellt, ich kann sie (gelegentlich) einfach nicht zwischenspeichern, wenn die Anzahl der Dateien im Cache-Ordner "zu groß" wird.

Alle Ideen / Kommentare sind willkommen!

Antworten:


2

Es hängt davon ab, welches Dateisystem Sie verwenden. Ich glaube, ext2 und ext3 sind zum Beispiel auf 32000 Unterordner beschränkt (Sie können so viele oder mehr Dateien haben, aber die Leistung wird darunter leiden ...); ext4 doppelt so hoch und einige andere erlauben mehr oder eine unbegrenzte Anzahl. In dieser Frage zu Server Fault finden Sie eine Diskussion und eine Antwort auf verschiedene Arten von Linux-Dateisystemen.


Vielen Dank. Ja, ich glaube, in diesem speziellen Cache-Ordner befanden sich ungefähr 32.000 Dateien, was möglicherweise der Schuldige war. Ich werde dich abstimmen, sobald ich 15 Wiederholungen habe!
DarkAsPitch

Sie können das Limit hier finden
phuclv

0

Ich habe das Gegenteil bei FC7 und Ubuntu gesehen, wo Verzeichnisse über 100K-Dateien problemlos verarbeiten. Stattdessen tritt ein Problem auf, wenn die Anzahl der Unterverzeichnisse 32 KB oder mehr beträgt - jedoch nicht nur die Anzahl der Dateien.

Da Sie sagen, dass diese Lösung "furchtbar schnell und schmutzig" war, liegt das Problem vielleicht nicht in CentOS, sondern in Ihrem Code? Oder sogar in der Sprache, die Sie verwenden? Ist es möglich, dass Ihr Code versucht, alle diese Dateien gleichzeitig offen zu halten, sodass ihm die Dateihandles oder eine solche Ressource ausgehen?


Ich denke, es ist eher ein "halte es einfach dumm" -Ansatz. Der Code ist in PHP geschrieben. Es überprüft eine Cache-Datei auf eine Dateizeit. Wenn keine Datei gefunden wird oder die Datei zu alt ist, werden neue Informationen aus bing abgerufen. Ich denke, dass diese Zahl von 32.000 ungefähr richtig erscheint. Ich kann nicht sagen, wie viele Dateien ich gelöscht habe, wahrscheinlich um die 12.000 - und es sind noch 20.000 im Cache-Ordner und alles funktioniert so gut. Meine beste Vermutung ist bisher die magische Nummer 32.
darkAsPitch

@darkAsPitch: zwei Dinge: [1] Sowohl frabjous als auch ich sagten, dass die 32-KB-Grenze bei Unterverzeichnissen liegt, nicht bei Dateien. Verwenden Sie ein Unterverzeichnis pro Cache-Eintrag? Ich wies darauf hin, zwanzig Minuten vor Frabjous. Ich bin gespannt, warum Sie bereit sind, diese Antwort anstelle dieser abzustimmen?
Beel

0

Die eigentliche Antwort hat mit Bing's Shoddy API zu tun - siehe diesen Thread im offiziellen Bing API 2.0-Forum: http://www.bing.com/community/Developer/f/12254/t/662869.aspx

Grundsätzlich verbergen sie Ergebnisse für zufällige Suchanfragen nach dem Zufallsprinzip und zwingen Sie, ihre Server doppelt so hart zu treffen, um die Informationen von ihnen zu erhalten. Da eine Antwort "keine Ergebnisse" häufig tatsächlich Ergebnisse liefert, müssen Sie sie erneut überprüfen.

Vielen Dank für Ihren Beitrag!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.