国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Linux服務器 > 正文

Linux設置虛擬內存的教學與實戰教程

2024-09-05 23:05:41
字體:
來源:轉載
供稿:網友

什么是虛擬內存?

先直接摘抄一段 wikipedia 上的介紹。

虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數據交換。

對于 C 語言里面的變量,我們可以使用 & 運算符來獲得其地址, 既然是虛擬地址,就是指這個地址是虛擬的。

虛擬地址機制不是必須的,在簡單的單片機中,編寫的代碼編譯時都需要指定物理 RAM 空間分布,不會有虛擬地址的概念,地址就是指在 RAM 中的物理地址。

  • 虛擬內存(之所以稱為虛擬內存,是和系統中的邏輯內存和物理內存相對而言的,邏輯內存是站在進程角度看到的內存,因此是程序員關心的內容。而物理內存是站在處理器角度看到的內存,由操作系統負責管理。虛擬內存可以說是映射到這兩種不同視角內存的一個技術手段。)技術就是一種由操作系統接管的按需動態內存分配的方法,它允許程序不知不覺中使用大于實際物理空間大小的存儲空間(其實是將程序需要的存儲空間以頁的形式分散存儲在物理內存和磁盤上),所以說虛擬內存徹底解放了程序員,從此程序員不用過分關心程序的大小和載入,可以自由編寫程序了,繁瑣的事情都交給操作系統去做吧。
  • SWAP(意思是“交換”、“實物交易”)分區是Linux的交換分區。它的功能就是在內存不夠的情況下,操作系統先把內存中暫時不用的數據,存到硬盤的交換空間,騰出內存來讓別的程序運行,當請求的數據不在內存中時,系統產生卻頁中斷,內存管理器便將對應的內存頁重新從硬盤調入物理內存。(需要嚴重注意的是它和內存映射文件的區別,linux虛擬內存或者說交換分區是在磁盤中有一個指定的區域即swap。)交換分區實際存在于磁盤中,不過Linux系統可以將它當作內存使用,當物理真實內存不足的時候交換分區就可以和真實內存進行數據交換。簡單地說就是從磁盤里拿出一塊空間當作內存的儲備區。雖說磁盤被拿來當作內存使用,但是速度還是磁盤的速度。

介紹

在我們自己的購買的服務器環境中,一般是買的1g的內存,但是當服務器里面的東西裝的比較多的時候就會導致內存不夠用了,本文將模擬一個真實的內存不夠用的情況下,如何通過修改虛擬內存來讓系統正常運行,我們這里的環境是搭建一個ElasticSearch搜索的環境,但是我們的服務器內存只有1g,下面將演示如何在將1g的虛擬內存修改為4G。

搭建ElasticSearch環境

現在我們的服務器環境是空的,什么都沒有,我們這里先將ElasticSearch上傳到服務器,然后將jdk和ElasticSearch安裝好。

安裝jdk

安裝教程后面更新(該文章主要介紹設置虛擬內存,安裝這些東西主要是模擬一個內存不夠的狀態)

安裝ElasticSearch

安裝鏈接后面更新(該文章主要介紹設置虛擬內存,安裝這些東西主要是模擬一個內存不夠的狀態)

啟動ElasticSearch

啟動ElasticSearch,會發現啟動的時候報錯了,原因是我們的服務器現在的內存并不能滿足ElasticSearch需要的內存。

[esyonghu@localhost elasticsearch-6.4.0]$ ./bin/elasticsearch [1] 3228[esyonghu@localhost elasticsearch-6.4.0]$ Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x000000008a660000, 1973026816, 0) failed; error='Cannot allocate memory' (errno=12)## There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (mmap) failed to map 1973026816 bytes for committing reserved memory.# An error report file with more information is saved as:# logs/hs_err_pid3228.log[esyonghu@localhost elasticsearch-6.4.0]$ 

查看我們的服務器的內存,使用命令 free,可以看到我們服務器的內存是1g, 這個時候就需要我們修改虛擬內存來解決該問題了。

[esyonghu@localhost elasticsearch-6.4.0]$ free -m  total used free shared buffers cachedMem:  980 582 397  2  23 245-/+ buffers/cache: 313 667Swap:  0  0  0[esyonghu@localhost elasticsearch-6.4.0]$ 

創建swap文件

進入/usr目錄

[root@localhost usr]$ pwd/usr[root@localhost usr]$ 

創建swap文件夾,并進入該文件夾

[root@localhost usr]# mkdir swap[root@localhost usr]# cd swap/[root@localhost swap]# pwd/usr/swap[root@localhost swap]# 

創建swapfile文件,使用命令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記錄了4096+0 的讀入記錄了4096+0 的寫出4294967296字節(4.3 GB)已復制,15.7479 秒,273 MB/秒[root@localhost swap]#

查看swap文件

使用命令du -sh /usr/swap/swapfile,可以看到我們創建的這個swap文件為4g

[root@localhost swap]# du -sh /usr/swap/swapfile4.1G	/usr/swap/swapfile[root@localhost swap]# 

將目標設置為swap分區文件

1、使用命令mkswap /usr/swap/swapfile將swapfile文件設置為swap分區文件

[root@localhost swap]# mkswap /usr/swap/swapfilemkswap: /usr/swap/swapfile: warning: don't erase bootbits sectors on whole disk. Use -f to force.Setting up swapspace version 1, size = 4194300 KiBno label, UUID=5bd241ff-5375-449d-9975-5fdd429df784[root@localhost swap]#

激活swap區,并立即啟用交換區文件

使用命令swapon /usr/swap/swapfile

[root@localhost swap]# swapon /usr/swap/swapfile[root@localhost swap]#

使用命令free -m 來查看現在的內存,可以看到里面的Swap分區變成了4095M,也就是4G內存。

[root@localhost swap]# free -m  total used free shared buffers cachedMem:  980 910  70  3  8 575-/+ buffers/cache: 326 654Swap:  4095  0 4095[root@localhost swap]#

設置開機自動啟用虛擬內存,在etc/fstab文件中加入如下命令

1、使用vim編輯器打開/etc/fstab文件

2、在文件中加入如下內容

/usr/swap/swapfile2 swap swap defaults 0 0

使用reboot命令重啟服務器

1、輸入reboot 命令來重啟

	[root@localhost swap]# reboot	Broadcast message from liaocheng@localhost.localdomain		(/dev/pts/1) at 3:56 ...	The system is going down for reboot NOW!	[root@localhost swap]# Connection to 192.168.136.142 closed by remote host.	Connection to 192.168.136.142 closed.	[進程已完成]

2、重啟完成過后使用free -m 命令來查看現在的內存是否掛在上了。

[root@localhost swap]# free -m    total  used  free  shared buffers  cachedMem:   980  910   70   3   8  575-/+ buffers/cache:  326  654Swap:   4095   0  4095

再次啟動ElasticSearch看看是否還會報內存不足的錯誤

1、還是切換到esyonghu去啟動(這里為什么要使用es用戶啟動就先不介紹了,這是elasticsearch里面的知識,這里只是用elasticsearch來模擬內存不足的情況),可以看到已經不會有內存不足的問題了。

[esyonghu@localhost elasticsearch-6.4.0]$ ./bin/elasticsearch &[1] 2898[esyonghu@localhost elasticsearch-6.4.0]$ [2019-03-06T04:00:24,841][INFO ][o.e.n.Node    ] [] initializing ...[2019-03-06T04:00:24,928][INFO ][o.e.e.NodeEnvironment ] [dMy5nR5] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [7.6gb], net total_space [17.3gb], types [rootfs][2019-03-06T04:00:24,928][INFO ][o.e.e.NodeEnvironment ] [dMy5nR5] heap size [1.9gb], compressed ordinary object pointers [true][2019-03-06T04:00:25,018][INFO ][o.e.n.Node    ] [dMy5nR5] node name derived from node ID [dMy5nR5fThaBb-Q2T0txdA]; set [node.name] to override[2019-03-06T04:00:25,018][INFO ][o.e.n.Node    ] [dMy5nR5] version[6.4.0], pid[2898], build[default/tar/595516e/2018-08-17T23:18:47.308994Z], OS[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 ][o.e.n.Node    ] [dMy5nR5] JVM arguments [-Xms2g, -Xmx2g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch.24Q3S9AE, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -XX:+PrintGCDetails, -XX:+PrintGCDateStamps, -XX:+PrintTenuringDistribution, -XX:+PrintGCApplicationStoppedTime, -Xloggc:logs/gc.log, -XX:+UseGCLogFileRotation, -XX:NumberOfGCLogFiles=32, -XX:GCLogFileSize=64m, -Des.path.home=/home/esyonghu/elasticsearch-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 ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [aggs-matrix-stats][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [analysis-common][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [ingest-common][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [lang-expression][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [lang-mustache][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [lang-painless][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [mapper-extras][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [parent-join][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [percolator][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [rank-eval][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [reindex][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [repository-url][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [transport-netty4][2019-03-06T04:00:28,023][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [tribe][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-core][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-deprecation][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-graph][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-logstash][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-ml][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-monitoring][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-rollup][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-security][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-sql][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-upgrade][2019-03-06T04:00:28,024][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded module [x-pack-watcher][2019-03-06T04:00:28,025][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded plugin [analysis-ik][2019-03-06T04:00:28,025][INFO ][o.e.p.PluginsService  ] [dMy5nR5] loaded plugin [analysis-pinyin][2019-03-06T04:00:31,315][INFO ][o.e.x.s.a.s.FileRolesStore] [dMy5nR5] parsed [0] roles from file [/home/esyonghu/elasticsearch-6.4.0/config/roles.yml][2019-03-06T04:00:32,017][INFO ][o.e.x.m.j.p.l.CppLogMessageHandler] [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][o.e.a.ActionModule  ] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security[2019-03-06T04:00:32,768][INFO ][o.e.d.DiscoveryModule ] [dMy5nR5] using discovery type [zen][2019-03-06T04:00:33,628][INFO ][o.e.n.Node    ] [dMy5nR5] initialized[2019-03-06T04:00:33,628][INFO ][o.e.n.Node    ] [dMy5nR5] starting ...[2019-03-06T04:00:33,860][INFO ][o.e.t.TransportService ] [dMy5nR5] publish_address {192.168.136.142:9300}, bound_addresses {[::]:9300}[2019-03-06T04:00:33,884][INFO ][o.e.b.BootstrapChecks ] [dMy5nR5] bound or publishing to a non-loopback address, enforcing bootstrap checks[2019-03-06T04:00:36,995][INFO ][o.e.c.s.MasterService ] [dMy5nR5] zen-disco-elected-as-master ([0] nodes joined)[, ], reason: 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 ][o.e.c.s.ClusterApplierService] [dMy5nR5] 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}, reason: apply cluster state (from master [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} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)[, ]]])[2019-03-06T04:00:37,058][INFO ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [dMy5nR5] publish_address {192.168.136.142:9200}, bound_addresses {[::]:9200}[2019-03-06T04:00:37,058][INFO ][o.e.n.Node    ] [dMy5nR5] started[2019-03-06T04:00:37,177][INFO ][o.w.a.d.Monitor   ] try load config from /home/esyonghu/elasticsearch-6.4.0/config/analysis-ik/IKAnalyzer.cfg.xml[2019-03-06T04:00:37,179][INFO ][o.w.a.d.Monitor   ] try load config from /home/esyonghu/elasticsearch-6.4.0/plugins/ik/config/IKAnalyzer.cfg.xml[2019-03-06T04:00:37,888][INFO ][o.e.m.j.JvmGcMonitorService] [dMy5nR5] [gc][4] overhead, spent [486ms] collecting in the last [1.2s][2019-03-06T04:00:38,435][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [dMy5nR5] Failed to clear cache for realms [[]][2019-03-06T04:00:38,469][INFO ][o.e.l.LicenseService  ] [dMy5nR5] license [c91cae39-79d7-4a0e-b40b-b1918a45f80c] mode [trial] - valid[2019-03-06T04:00:38,477][INFO ][o.e.g.GatewayService  ] [dMy5nR5] recovered [5] indices into cluster_state[2019-03-06T04:00:38,902][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [dMy5nR5] Failed to clear cache for realms [[]][2019-03-06T04:00:39,106][INFO ][o.e.c.r.a.AllocationService] [dMy5nR5] Cluster health status changed from [RED] to [YELLOW] (reason: [shards started [[mynote2][2]] ...]).

2、現在使用free -m來查看內存使用情況, 可以看到swap已經被使用了1.7G

[esyonghu@localhost elasticsearch-6.4.0]$ free -m    total  used  free  shared buffers  cachedMem:   980  916   64   0   3   33-/+ buffers/cache:  880  100Swap:   4095  1735  2360[esyonghu@localhost elasticsearch-6.4.0]$

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临潭县| 吉安县| 梅河口市| 汤原县| 岚皋县| 横山县| 米林县| 镇原县| 保康县| 开原市| 尼木县| 盘锦市| 洞口县| 怀集县| 南部县| 吉安市| 元氏县| 安国市| 出国| 驻马店市| 乐平市| 静海县| 合川市| 大港区| 长治县| 白朗县| 滦南县| 商南县| 和静县| 牙克石市| 伊宁市| 开江县| 紫云| 内江市| 达孜县| 体育| 红桥区| 清水河县| 蒙阴县| 永善县| 浠水县|