##1.1 前言 很久之前在做一個網站的時候,發現的一個問題。 之前在搭建完網站需要啟動Mysql的時候,死活啟動不了。為什麼?我查了下日誌,發現是etc/mysql/下的Mysql配置文件一直無法生成。 這個文件一般是隨著Mysql服務重啟的時候會自動生成到etc/配置文件下。我當前的機器記憶體是很 ...
目錄
1.1 前言
很久之前在做一個網站的時候,發現的一個問題。
之前在搭建完網站需要啟動Mysql的時候,死活啟動不了。為什麼?我查了下日誌,發現是etc/mysql/下的Mysql配置文件一直無法生成。
這個文件一般是隨著Mysql服務重啟的時候會自動生成到etc/配置文件下。我當前的機器記憶體是很足的,所以我想臨時文件不可能生成不了呀!
1.2 虛擬記憶體orSwap
但是也知道SWap文件交換區的作用,但是我想的是按照Windows的路子,臨時的東西不都是放在記憶體里的嗎?
不過我後來又想到操作系統有虛擬記憶體一說呀,那麼Linux的虛擬記憶體是啥?
swap全稱為swap place,即交換區,當記憶體不夠的時候,被踢出的進程被暫時存儲到交換區。當需要這條被踢出的進程的時候,就從交換區重新載入到記憶體,否則它不會主動交換到真實記憶體中。
就這樣我重新修改了一下機器的Swap空間大小,如果配置文件成功生成了!這裡就有一個疑問了,Linux在工作中什麼時候選擇記憶體,什麼時候選擇Swap?
1.3 交換區
交換分區並不是等到物理記憶體用盡了才使用的,是否儘量的使用或不使用swap,在內核空間有一個參數控制。
cat /proc/sys/vm/
swappinessswappiness=0 的時候表示最大限度使用物理記憶體,然後才是swap空間;swappiness=100 的時候表示積極的使用swap分區,並且把記憶體上的數據及時的搬運到swap空間裡面。
考慮到以下情況:
1)安裝系統時難以確定記憶體的負荷,如何設置交換分區大小。
2)系統中物理記憶體越大,所需交換分區就會越少。
因此,在Red Hat Enterprise Linux 中,以下是設置合適的交換分區大小的規則:
我們平時安裝系統時,預設都分記憶體的2倍,因為現在有硬碟空間都很大,也不在乎那幾十G的空間。
通過一些實踐發現,一般臨時配置文件都是會放在Swap區里的,所以當你發現你機子記憶體很足,但是就是出現一些程式突然運行中斷現象,極有可能是你分配給機子的Swap空間太小了。
比如網站的搭建必然要很大的Swap空間去存儲一些臨時靜態文件。