關於Linux下內存和Swap

1.1 前言

好久以前在作一個網站的時候,發現的一個問題。
以前在搭建完網站須要啓動Mysql的時候,死活啓動不了。爲何?我查了下日誌,發現是etc/mysql/下的Mysql配置文件一直沒法生成。
這個文件通常是隨着Mysql服務重啓的時候會自動生成到etc/配置文件下。我當前的機器內存是很足的,因此我想臨時文件不可能生成不了呀!mysql

1.2 虛擬內存orSwap

可是也知道SWap文件交換區的做用,可是我想的是按照Windows的路子,臨時的東西不都是放在內存裏的嗎?

不過我後來又想到操做系統有虛擬內存一說呀,那麼Linux的虛擬內存是啥?
swap全稱爲swap place,即交換區,當內存不夠的時候,被踢出的進程被暫時存儲到交換區。當須要這條被踢出的進程的時候,就從交換區從新加載到內存,不然它不會主動交換到真實內存中。
就這樣我從新修改了一下機器的Swap空間大小,若是配置文件成功生成了!這裏就有一個疑問了,Linux在工做中何時選擇內存,何時選擇Swap?sql

1.3 交換區

交換分區並非等到物理內存用盡了才使用的,是否儘可能的使用或不使用swap,在內核空間有一個參數控制。
cat /proc/sys/vm/
swappinessswappiness=0 的時候表示最大限度使用物理內存,而後纔是swap空間;swappiness=100 的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。app

考慮到如下狀況:網站

1)安裝系統時難以肯定內存的負荷,如何設置交換分區大小。操作系統

2)系統中物理內存越大,所需交換分區就會越少。日誌

所以,在Red Hat Enterprise Linux 中,如下是設置合適的交換分區大小的規則:

咱們平時安裝系統時,默認都份內存的2倍,由於如今有硬盤空間都很大,也不在意那幾十G的空間。
經過一些實踐發現,通常臨時配置文件都是會放在Swap區裏的,因此當你發現你機子內存很足,可是就是出現一些程序忽然運行中斷現象,極有多是你分配給機子的Swap空間過小了。
好比網站的搭建必然要很大的Swap空間去存儲一些臨時靜態文件。blog

相關文章
相關標籤/搜索