![Warum verwendet mein Server nur 3 GB Speicher](https://rvso.com/image/959231/Warum%20verwendet%20mein%20Server%20nur%203%20GB%20Speicher.png)
Der Server hat 24 GB Speicher und 4 Quad-Core-CPUs. Er betreibt eine vielbeschäftigte Website mit Apache/MySQL/PHP und gibt manchmal eine Meldung aus, dass die Serverlast zu hoch ist. Wenn ich mir die Protokolle anschaue, wird nie mehr als 3 GB Speicher verwendet, was mir seltsam vorkommt. Dies könnte eine MySQL- oder Apache-Einstellung sein.
Hier einige Daten
uname -a
Linux s2274 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux
free -m
total used free shared buffers cached
Mem: 24153 20951 3201 0 125 17719
-/+ buffers/cache: 3106 21046
Swap: 11240 14 11226
Wie Sie sehen, wird hier angezeigt, dass 20 GB verwendet werden. Aber wenn ich mir top/htop anschaue, wird nie eine Verwendung über 3092 angezeigt. Die Prozessoren sind nicht wirklich aktiv, die durchschnittliche Auslastung beträgt 0,9. Könnte ich den von Apache und/oder MySQL verwendeten Speicher irgendwie erhöhen, um zu sehen, ob der gesamte Speicher verwendet werden kann?
Entschuldigen Sie, ich war eine Weile weg … Hier ist die Ausgabe des mysqld-Befehls:
120108 8:48:21 [Note] Plugin 'FEDERATED' is disabled.
--binlog_cache_size=#
--bulk_insert_buffer_size=#
--delayed_queue_size=#
--join_buffer_size=#
--key_buffer_size=# The size of the buffer used for index blocks for MyISAM
--key_cache_block_size=#
--max_binlog_cache_size=#
--max_binlog_size=# Binary log will be rotated automatically when the size
max_relay_log_size is 0. The minimum value for this
--max_heap_table_size=#
--max_join_size=# Joins that are probably going to read more than
max_join_size records return an error.
--max_relay_log_size=#
the size exceeds max_binlog_size. 0 excepted, the minimum
--myisam_block_size=#
--myisam_data_pointer_size=#
--myisam_max_extra_sort_file_size=#
--myisam_max_sort_file_size=#
--myisam_sort_buffer_size=#
--preload_buffer_size=#
--profiling_history_size=#
--query_alloc_block_size=#
--query_cache_size=#
--query_prealloc_size=#
--range_alloc_block_size=#
--read_buffer_size=#
--read_rnd_buffer_size=#
--record_buffer=# Alias for read_buffer_size
--sort_buffer_size=#
--thread_cache_size=#
--tmp_table_size=# If an internal in-memory temporary table exceeds this
--transaction_alloc_block_size=#
--transaction_prealloc_size=#
binlog_cache_size 32768
bulk_insert_buffer_size 8388608
delayed_queue_size 1000
join_buffer_size 12582912
key_buffer_size 805306368
key_cache_block_size 1024
max_binlog_cache_size 18446744073709547520
max_binlog_size 104857600
max_heap_table_size 805306368
max_join_size 18446744073709551615
max_relay_log_size 0
myisam_block_size 1024
myisam_data_pointer_size 6
myisam_max_extra_sort_file_size 2147483648
myisam_max_sort_file_size 9223372036853727232
myisam_sort_buffer_size 25165824
preload_buffer_size 32768
profiling_history_size 15
query_alloc_block_size 8192
query_cache_size 805306368
query_prealloc_size 8192
range_alloc_block_size 4096
read_buffer_size 25165824
read_rnd_buffer_size 25165824
sort_buffer_size 25165824
thread_cache_size 256
tmp_table_size 805306368
transaction_alloc_block_size 8192
transaction_prealloc_size 4096
Das PHP-Speicherlimit beträgt 128 M
Ich sehe dieses 3-GB-Limit in mehreren Situationen. Beispielsweise Htop, top und wenn ich mich im Serverstatus bei Webmin anmelde. (Ja, ich verwende Webmin, da ich viele Verwaltungsaufgaben von meinem iPad aus erledige ;))
Ich werde versuchen, hier einen Screenshot hinzuzufügen ...
Antwort1
Sie verwenden 20951 von 24153. Die Anwendungen fordern nicht mehr als 3092 an, daher verwendet der Kernel den Rest für Cache und Puffer. Da Ihre Anwendungen mehr Speicher benötigen, reduziert der Kernel den Cache, um den neuen Anwendungsanforderungen gerecht zu werden.
Die Optimierung der MySQL- und Apache-Konfiguration für optimale Leistung hängt von der Anwendung ab. In manchen Fällen, wie bei statischen Websites, ist ein großer Dateisystem-Cache großartig. Eine dynamische Site mit starker Datenbankinteraktion würde jedoch von einigen Änderungen an der MySQL-Standardkonfiguration profitieren.
Percona verfügt über ein nettes Tool, das Ihnen den Einstieg in die MySQL-Konfiguration erleichtert.http://tools.percona.com/wizardSobald die Grundlagen festgelegt sind, können Sie weitere Anpassungen an die Besonderheiten Ihrer Anwendung vornehmen.
Die Apache-Konfiguration hängt vom Datenverkehr und der Größe der Anfragen ab. Ohne Kenntnisse ist es schwierig, über die Standardeinstellungen hinaus Empfehlungen zu geben.
Antwort2
Wenn ich richtig liege, betreiben Sie einen 32-Bit-Server
32 Bit ist auf 4 GB Speicher beschränkt, sofern Sie nicht das PAE-Image verwenden:
Ein 32-Bit-Computer hat eine Wortgröße von 32 Bit, was den Speicher theoretisch auf 4 GB begrenzt. Diese Grenze wurde durch die Verwendung der „Physical Address Extension“ (oder PAE) erweitert, wodurch die Grenze auf 64 GB erhöht wird, obwohl der Speicherzugriff über 4 GB etwas langsamer ist.
ich kann nicht herausfinden, ob das Kernel-Image PAE enthält.
Sie können versuchen, apt-get install linux-image-generic-pae auszuführen
Wenn das nicht der Fall ist, führen Sie einen Neustart durch und prüfen Sie, ob Sie mehr von Ihrem Speicher nutzen.
Andernfalls erwägen Sie die Installation eines 64-Bit-Servers