Speicher voll ausgelastet, aber oben werden keine Prozesse angezeigt, die diesen Speicher verwenden

Speicher voll ausgelastet, aber oben werden keine Prozesse angezeigt, die diesen Speicher verwenden

Ich habe einen Server mit 2 GB RAM, der auf dem von MediaTemple verwalteten DV-Server läuft, der CentOS verwendet. Der Befehl free -mgibt Folgendes aus:

             total       used       free     shared    buffers     cached
Mem:          2048       1948         99          0          0        140
-/+ buffers/cache:       1808        239
Swap:         1536        288       1247

Wenn ich jedoch versuche herauszufinden, welche Prozesse den Speicher verwenden top, erhalte ich Folgendes:

1417 mysql     20   0  496m 496m 7512 S  1.3 24.3  42:10.92 mysqld                                                                                                                                         
 3259 okgo      20   0 49436  48m  11m S  0.0  2.4   0:21.96 php-cgi                                                                                                                                        
 3175 root      20   0 49144  47m 3196 S  0.0  2.3   0:01.80 spamd                                                                                                                                          
 3176 popuser   20   0 46940  45m  992 S  0.0  2.2   0:00.00 spamd                                                                                                                                          
 3269 okgo      20   0 44372  43m  10m S 19.2  2.1   0:02.11 php-cgi                                                                                                                                        
 3272 okgo_for  20   0 23808  23m  10m S  0.0  1.1   0:00.79 php-cgi                                                                                                                                        
27161 root      20   0 10816  10m 9460 S  0.0  0.5   0:01.97 httpd                                                                                                                                          
  786 root      20   0  4844 4844 2140 S  0.0  0.2   2:28.96 newrelic-daemon                                                                                                                                
 1017 apache    20   0  4552 4552 2228 S  0.0  0.2   0:01.38 httpd                                                                                                                                          
 3277 postfix   20   0  4432 4432 2548 S  0.0  0.2   0:00.00 trivial-rewrite    

Was mich hier verwirrt, ist die Tatsache, dass der free -mBefehl scheinbar anzeigt, dass dieser Speicher nicht zwischengespeichert ist, d. h. die -/+ buffers/cacheZeile zeigt auch 1827 verwendet an! Was übersehe ich hier?

Bearbeiten

Auf Anfrage hier die Ausgabe von /proc/meminfo (die free -m zu widersprechen scheint?):

MemTotal:        2097152 kB
MemFree:           55808 kB
Cached:           158656 kB
Buffers:               0 kB
Active:           368924 kB
Inactive:         428580 kB
Active(anon):     273480 kB
Inactive(anon):   365368 kB
Active(file):      95444 kB
Inactive(file):    63212 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       1572864 kB
SwapFree:        1277160 kB
Dirty:                68 kB
Writeback:             0 kB
AnonPages:        638848 kB
Shmem:              4424 kB
Slab:            1243780 kB
SReclaimable:    1222584 kB
SUnreclaim:        21196 kB

Auch,dieser Beitragkönnte Licht in die Situation bringen, aber /proc/meminfo hier deutet darauf hin, dass ein sehr großer Prozentsatz des Speichers verwendet wird, der oben nicht aufgeführt ist.

Antwort1

Slab ist Speicher, der vom Kernel verwendet wird und nicht angezeigt wird inSpitze. Es sind derzeit ca. 1,2 GB und das addiert sich richtig zu IhremSpitzeAusgabe auf diejenige, die gegeben ist durchfrei. Sie können genauer untersuchen, wo es verwendet wird, indem SiePlattenplatteBefehl.

PS: Eines der häufigsten Szenarien, in denen viel Slab-Speicher verwendet wird, ist, wenn das System viele Dateien hat und diese häufig liest/schreibt. Dann wird viel Speicher für das Zwischenspeichern von Inode-Informationen verwendet. Dieses Zwischenspeichern kann etwas optimiert werden, allerdings auf Kosten der Leistung.

verwandte Informationen