Was ist virtueller Speicher? Zunächst werde ich eine Einleitung direkt aus Wikipedia zitieren.
Für Variablen in der Sprache C können wir den Operator & verwenden, um ihre Adresse abzurufen. Da es sich um eine virtuelle Adresse handelt, bedeutet dies, dass diese Adresse virtuell ist. Der virtuelle Adressmechanismus ist nicht notwendig. Bei einem einfachen Mikrocontroller muss die physische RAM-Speicherplatzverteilung beim Kompilieren des Codes angegeben werden. Es gibt kein Konzept einer virtuellen Adresse. Die Adresse bezieht sich auf die physische Adresse im RAM.
einführen In unserer eigenen gekauften Serverumgebung kaufen wir normalerweise 1 GB Speicher, aber wenn mehr Dinge auf dem Server installiert sind, reicht der Speicher nicht mehr aus. Dieser Artikel simuliert eine reale Situation, in der der Speicher nicht ausreicht, und zeigt, wie der virtuelle Speicher geändert werden kann, damit das System normal läuft. Unsere Umgebung hier besteht darin, eine ElasticSearch-Suchumgebung zu erstellen, aber unser Serverspeicher beträgt nur 1 GB. Im Folgenden wird gezeigt, wie der virtuelle Speicher von 1 GB auf 4 GB geändert wird. Erstellen Sie eine ElasticSearch-Umgebung Jetzt ist unsere Serverumgebung leer und enthält nichts. Wir laden zuerst ElasticSearch auf den Server hoch und installieren dann JDK und ElasticSearch. Installieren Sie JDK Das Installationstutorial wird später aktualisiert (in diesem Artikel wird hauptsächlich die Einrichtung des virtuellen Speichers vorgestellt. Die Installation dieser Dinge dient hauptsächlich dazu, einen Zustand unzureichenden Speichers zu simulieren). Installieren Sie ElasticSearch Der Installationslink wird später aktualisiert (in diesem Artikel wird hauptsächlich das Einrichten des virtuellen Speichers vorgestellt. Die Installation dieser Dinge dient hauptsächlich dazu, einen Zustand unzureichenden Speichers zu simulieren.) ElasticSearch starten Wenn Sie ElasticSearch starten, werden Sie feststellen, dass beim Start ein Fehler gemeldet wird. Der Grund dafür ist, dass der aktuelle Speicher unseres Servers nicht den von ElasticSearch benötigten Speicher erfüllen kann. [esyonghu@localhost elasticsearch-6.4.0]$ ./bin/elasticsearch [1] 3228 [esyonghu@localhost elasticsearch-6.4.0]$ Java HotSpot(TM) 64-Bit Server VM-Warnung: INFO: os::commit_memory(0x000000008a660000, 1973026816, 0) fehlgeschlagen; Fehler='Speicher kann nicht zugewiesen werden' (errno=12) # # Es ist nicht genügend Speicher vorhanden, um die Java Runtime Environment fortzusetzen. # Bei der nativen Speicherzuweisung (mmap) konnten 1973026816 Bytes zum Festschreiben des reservierten Speichers nicht zugeordnet werden. # Eine Fehlerberichtsdatei mit weiteren Informationen wird wie folgt gespeichert: # logs/hs_err_pid3228.log [esyonghu@localhost elasticsearch-6.4.0]$ Überprüfen Sie den Speicher unseres Servers und verwenden Sie den Befehl free. Sie können sehen, dass der Speicher unseres Servers 1 GB beträgt. Zu diesem Zeitpunkt müssen wir den virtuellen Speicher ändern, um das Problem zu lösen. [esyonghu@localhost elasticsearch-6.4.0]$ frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Mitglied: 980 582 397 2 23 245 -/+ Puffer/Cache: 313 667 Tauschen: 0 0 0 [esyonghu@localhost elasticsearch-6.4.0]$ Erstellen einer Auslagerungsdatei Geben Sie das Verzeichnis /usr ein [root@localhost usr]$ pwd /usr [root@localhost usr]$ Einen Swap-Ordner anlegen und eintragen [root@localhost usr]# mkdir swap [root@localhost usr]# cd swap/ [root@localhost swap]# pwd /usr/swap [root@localhost-Austausch] Erstellen Sie eine Auslagerungsdatei. Verwenden Sie dazu den Befehl dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096 [root@localhost swap]# dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096 Aufgezeichnete 4096+0 Lesevorgänge Aufgezeichnete 4096+0 Schreibvorgänge 4294967296 Bytes (4,3 GB) kopiert, 15,7479 Sekunden, 273 MB/Sek. [root@localhost swap]# Auslagerungsdatei anzeigen Verwenden Sie den Befehl du -sh /usr/swap/swapfile, um zu sehen, dass die von uns erstellte Auslagerungsdatei 4g ist [root@localhost swap]# du -sh /usr/swap/swapfile 4,1 G /usr/swap/Swap-Datei [root@localhost-Austausch] Legen Sie das Ziel auf die Swap-Partitionsdatei fest 1. Verwenden Sie den Befehl mkswap /usr/swap/swapfile, um die Auslagerungsdatei als Auslagerungspartitionsdatei festzulegen [root@localhost swap]# mkswap /usr/swap/swapfile mkswap: /usr/swap/swapfile: Warnung: Bootbits-Sektoren nicht löschen. auf der gesamten Festplatte. Verwenden Sie -f, um dies zu erzwingen. Einrichten von Swapspace Version 1, Größe = 4194300 KiB kein Label, UUID=5bd241ff-5375-449d-9975-5fdd429df784 [root@localhost-Austausch] Aktivieren Sie den Swap-Bereich und aktivieren Sie die Swap-Bereichsdateien sofort Verwenden Sie den Befehl swapon /usr/swap/swapfile [root@localhost swap]# swapon /usr/swap/swapfile [root@localhost-Austausch] Verwenden Sie den Befehl free -m, um den aktuellen Speicher zu überprüfen. Sie können sehen, dass die Swap-Partition 4095 MB groß geworden ist, was 4 GB Speicher bedeutet. [root@localhost swap]# frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Speicher: 980 910 70 3 8 575 -/+ Puffer/Cache: 326 654 Tausch: 4095 0 4095 [root@localhost-Austausch] Stellen Sie den virtuellen Speicher so ein, dass er beim Start automatisch aktiviert wird, und fügen Sie den folgenden Befehl zur Datei etc/fstab hinzu 1. Öffnen Sie mit dem vim-Editor die Datei /etc/fstab 2. Fügen Sie der Datei den folgenden Inhalt hinzu /usr/swap/swapfile2 Swap-Swap-Standardwerte 0 0 Starten Sie den Server mit dem Befehl „reboot“ neu 1. Geben Sie den Neustartbefehl ein, um neu zu starten [root@localhost swap]# Neustart Broadcast-Nachricht von [email protected] (/dev/pts/1) um 3:56 ... Das System wird JETZT zum Neustart heruntergefahren! [root@localhost swap]# Verbindung zu 192.168.136.142 vom Remote-Host geschlossen. Verbindung zu 192.168.136.142 geschlossen. [Vorgang abgeschlossen] 2. Überprüfen Sie nach Abschluss des Neustarts mit dem Befehl free -m, ob der aktuelle Speicher hängt. [root@localhost swap]# frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Speicher: 980 910 70 3 8 575 -/+ Puffer/Cache: 326 654 Tausch: 4095 0 4095 Starten Sie ElasticSearch erneut, um zu sehen, ob der Speicherfehler weiterhin gemeldet wird. 1. Wechseln Sie zum Starten zu esyonghu (ich werde hier nicht erklären, warum wir zum Starten den Benutzer es verwenden, das ist das Wissen von Elasticsearch, hier verwenden wir Elasticsearch nur, um die Situation von unzureichendem Speicher zu simulieren). Sie können sehen, dass kein Speichermangelproblem vorliegt. [esyonghu@localhost elasticsearch-6.4.0]$ ./bin/elasticsearch & [1] 2898 [esyonghu@localhost elasticsearch-6.4.0]$ [2019-03-06T04:00:24,841][INFO ][oenNode ][] Initialisierung ... [2019-03-06T04:00:24,928][INFO ][oeeNodeEnvironment ] [dMy5nR5] verwendet [1] Datenpfade, Mounts [[/ (rootfs)]], Netto nutzbarer_Speicherplatz [7,6 GB], Netto Gesamtspeicherplatz [17,3 GB], Typen [rootfs] [2019-03-06T04:00:24,928][INFO ][oeeNodeEnvironment ] [dMy5nR5] Heap-Größe [1,9 GB], komprimierte Zeiger für gewöhnliche Objekte [true] [2019-03-06T04:00:25,018][INFO ][oenNode ] [dMy5nR5] Knotenname abgeleitet von Knoten-ID [dMy5nR5fThaBb-Q2T0txdA]; setze [node.name] zum Überschreiben [2019-03-06T04:00:25,018][INFO ][oenNode ] [dMy5nR5] Version[6.4.0], PID[2898], Build[Standard/tar/595516e/2018-08-17T23:18:47.308994Z], Betriebssystem[Linux/2.6.32-696.el6.x86_64/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_181/25.181-b13] [2019-03-06T04: 00: 25,018] [Info] [Oennode] [DMY5NR5] JVM -Argumente [-xms2g, -xmx2g, -xx:+useconconconconconx: -xxxx:+useStoccuper ss1m, -djava.awt.headless = true, -dfile.encoding = utf -8, -djna.noSys = true, -xx: -omitstacktraceinfastthrow, -dio.Netty.nounsafe = true, -dio.Necy.nokeysToPaNISICE utdownhookenabled = false, -dlog4j2.Disable.jmx = true, -djava.io.tmpdir =/tmp/elasticsearch.24q3s9ae, -xx:+heaponoutofmemoryError, -xx: heapdumppath = data, -xx: -xx: ERRALE: ERRALTFILE = FEHLERFILE = LOGS/HS_RAGS , -Xx:+printgcdatestamps, -xx:+printtenuringdistribution, -xx:+printgcapplicationStopedTime, -xloggc: logs/gc.log, -xx:+usegclogFilerotation, -xx: numberOfgclogs Asticsarch -6.4.0, -des.path.conf =/home/Esyonghu/Elasticsearch -6.4.0/config, -des.distribution.flavor = default, -des.distribution.type = tar] [2019-03-06T04:00:28,022][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [aggs-matrix-stats] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [analysis-common] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [ingest-common] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [lang-expression] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [lang-mustache] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [lang-painless] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [mapper-extras] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [parent-join] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [Percolator] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [rank-eval] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] Modul geladen [reindex] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [Repository-URL] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [transport-netty4] [2019-03-06T04:00:28,023][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [Stamm] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-core] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-deprecation] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-graph] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-logstash] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-ml] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-monitoring] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-rollup] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-security] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-sql] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-upgrade] [2019-03-06T04:00:28,024][INFO ][oepPluginsService ] [dMy5nR5] geladenes Modul [x-pack-watcher] [2019-03-06T04:00:28,025][INFO ][oepPluginsService ] [dMy5nR5] Plugin geladen [analysis-ik] [2019-03-06T04:00:28,025][INFO ][oepPluginsService ] [dMy5nR5] Plugin geladen [Analyse-Pinyin] [2019-03-06T04:00:31,315][INFO ][oexsasFileRolesStore] [dMy5nR5] hat [0] Rollen aus der Datei [/home/esyonghu/elasticsearch-6.4.0/config/roles.yml] analysiert. [2019-03-06T04:00:32,017][INFO ][oexmjplCppLogMessageHandler] [controller/2947] [Main.cc@109] Controller (64 Bit): Version 6.4.0 (Build cf8246175efff5) Copyright (c) 2018 Elasticsearch BV [2019-03-06T04:00:32,495][DEBUG][oeaActionModule ] Verwenden des REST-Wrappers vom Plugin org.elasticsearch.xpack.security.Security [2019-03-06T04:00:32,768][INFO ][oedDiscoveryModule ] [dMy5nR5] mit Erkennungstyp [zen] [2019-03-06T04:00:33,628][INFO ][oenNode ] [dMy5nR5] initialisiert [2019-03-06T04:00:33,628][INFO ][oenNode ] [dMy5nR5] wird gestartet ... [2019-03-06T04:00:33,860][INFO ][oetTransportService ] [dMy5nR5] Veröffentlichungsadresse {192.168.136.142:9300}, gebundene_Adressen {[::]:9300} [2019-03-06T04:00:33,884][INFO ][oebBootstrapChecks ] [dMy5nR5] gebunden oder veröffentlicht an eine Nicht-Loopback-Adresse, wodurch Bootstrap-Prüfungen erzwungen werden [2019-03-06T04:00:36,995][INFO ][oecsMasterService ] [dMy5nR5] zen-disco-elected-as-master ([0] Knoten beigetreten)[, ], Grund: new_master {dMy5nR5}{dMy5nR5fThaBb-Q2T0txdA}{ldgTZ1XZSfOpda9uP4treA}{192.168.136.142}{192.168.136.142:9300}{ml.machine_memory=1028210688, xpack.installed=true, ml.max_open_jobs=20, ml.enabled=true} [2019-03-06t04: 00: 37,003] [Info] [OecsclusterAppierservice] [DMY5NR5] NEW_MASTER {192.168.136.142:9300} {Ml.Machine_Memory=1028210688, xpack.installed = true, ml.max_open_jobs = 20, ml.enabled = true}, Grund: cluster state anwenden (von master {dmy5 {dmy5 {dmy5 {dmy5 {dmy5 {dmy5 {dmy5} {dmy5 {dmy5} {dmy5 {dmy5} {dmy5 {dmy5} {dmy5 {dmy5} {dmy5 {dmy5} {dmy5 {dmy5 {dmy5fnr5f. } oder ] Quelle [Zen-Disco-gewählte als Master ([0] Knoten) [,]]])) [2019-03-06T04:00:37,058][INFO ][oexstnSecurityNetty4HttpServerTransport] [dMy5nR5] Veröffentlichungsadresse {192.168.136.142:9200}, gebundene_Adressen {[::]:9200} [2019-03-06T04:00:37,058][INFO ][oenNode ] [dMy5nR5] gestartet [2019-03-06T04:00:37,177][INFO ][owadMonitor ] versuche, die Konfiguration von /home/esyonghu/elasticsearch-6.4.0/config/analysis-ik/IKAnalyzer.cfg.xml zu laden [2019-03-06T04:00:37,179][INFO ][owadMonitor ] versuche, die Konfiguration von /home/esyonghu/elasticsearch-6.4.0/plugins/ik/config/IKAnalyzer.cfg.xml zu laden [2019-03-06T04:00:37,888][INFO ][oemjJvmGcMonitorService] [dMy5nR5] [gc][4] Overhead, benötigte [486 ms] zum Sammeln in den letzten [1,2 s] [2019-03-06T04:00:38,435][WARN ][oexsasmNativeRoleMappingStore] [dMy5nR5] Cache für Realms konnte nicht geleert werden [[]] [2019-03-06T04:00:38,469][INFO ][oelLicenseService ] [dMy5nR5] Lizenz [c91cae39-79d7-4a0e-b40b-b1918a45f80c] Modus [Testversion] - gültig [2019-03-06T04:00:38,477][INFO ][oegGatewayService ] [dMy5nR5] hat [5] Indizes in cluster_state wiederhergestellt [2019-03-06T04:00:38,902][WARN ][oexsasmNativeRoleMappingStore] [dMy5nR5] Cache für Realms konnte nicht geleert werden [[]] [2019-03-06T04:00:39,106][INFO ][oecraAllocationService] [dMy5nR5] Cluster-Integritätsstatus von [ROT] auf [GELB] geändert (Grund: [Shards gestartet [[mynote2][2]] ...]). 2. Verwenden Sie nun free -m, um die Speichernutzung zu überprüfen. Sie können sehen, dass 1,7 GB Swap verwendet wurden. [esyonghu@localhost elasticsearch-6.4.0]$ frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Speicher: 980 916 64 0 3 33 -/+ Puffer/Cache: 880 100 Tausch: 4095 1735 2360 [esyonghu@localhost elasticsearch-6.4.0]$ Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Zusammenfassung gängiger SQL-Anweisungen in MySQL
>>: CocosCreator Skelettanimation Drachenknochen
Ich habe die Mysql FIND_IN_SET-Funktion vor einig...
Was ist MySQL Multi-Instance Einfach ausgedrückt ...
Haben Sie nach den letzten beiden Kapiteln ein ne...
Methode 1: var a = [1,2,3]; var b=[4,5] a = a.con...
1. Hintergrund Die Projekte des Unternehmens wurd...
MySQL-Basisdatentypen Übersicht über gängige MySQ...
Leistung von „Union All“ in MySQL 5.6 Teil 1: MyS...
Inhaltsverzeichnis verifizieren: Kombiniert mit d...
Kürzlich hat das WeChat Mini-Programm Anpassungen...
Ehrlich gesagt erfordert diese Frage eine Menge g...
Inhaltsverzeichnis Vorwort 1. Aktuelle gcc-Versio...
Inhaltsverzeichnis Vorwort Umfeld Installieren Er...
In diesem Artikel wird der spezifische Code von v...
Methode 1: Pycharm herunterladen und installieren...
1: Anmeldeeingang der Baidu-Website Website: http:...