2016年5月31日 星期二

在Ubuntu下建立RAMdisk,以加快網頁讀取速度

RAM的中文名稱叫做隨機存取記憶體,俗稱記憶體,有著存取速度快速,當電腦重新開機後記憶體內資料清空的特性。根據這樣的特性,RAMDisk的技術就是把記憶體儲存空間,拿來做硬碟空間使用。(換句話說:本來應該存在電腦硬碟上的資料,卻改存在記憶體中)。 優點當然是:運算速度飛快。
缺點則是:
1.必須使用64位元的OS,才能使用超過4G的記憶體
2.因為是拿記憶體空間作為儲存用,重新開機或電腦當機的話,資料就會消失不見,所以如果只是為了體驗高速的快感,拿來玩玩即可,但千萬不可以儲存重要資料。
3.記憶體品質不佳時,則有可能會發生資料缺漏或儲存錯誤的狀況。(推薦使用ECC記憶體教完穩定)

針對以上的認知與了解後,接下來的實例是在一台提供Apache以及PHP服務的機器上所做的規劃。
當瀏覽者連線讀取我們的伺服器時,會在伺服器端生成Session資料以記錄瀏覽者的私密資料,而這些Session資料預設狀態下是儲存在硬碟空間,但倘使該伺服器的使用者很多時,多少會有Session交換不及的情形,所以我們的做法是把Session改存到記憶體中,反正如果伺服器重新開機或當機,Session本來就應該被清空。

作法:
1.首先,我們先建立Ramdisk的實體路徑,譬如在home底下建立ramdisk資料夾
mkdir /home/ramdisk

2.修改fstab配置,讓/home/ramdisk配置在記憶體而不是硬碟,重要的關鍵字就是「tmpfs」,size大小可以隨自己需求編配,gid=33、uid=33則是Ubuntu系統預設的Apache群組與使用者。
vi /etc/fstab
tmpfs /home/ramdisk tmpfs size=64m,gid=33,uid=33,mode=1755,noexec 0 0

3.再來就是指定session儲存路徑,把他只到我們剛剛設定的RAMDisk路徑
vi /etc/php5/apache2/php.ini
session.save_path = "/home/ramdisk"
4.重啟Apache,php.ini的設定值才會生效
service apache2 restart

5.重啟機器,fstab的設定才會生效


此外,因為我們的伺服器幾乎不關機的,所以Session雖然被寫入到/home/ramdisk,但是卻有可能不會被清除掉,所以我們也可以寫一段script,然後設定排程,定期清除session資料


1.script內容為

#!/bin/bash
/bin/umount
/home/ramdisk/bin/mount
/home/ramdisk

2.設定每天凌晨清除session資料

輸入crontab -e
00 3 * * * /root/ram_mm.txt > /dev/null

啊~會不會有人在凌晨3點讀取我的伺服器卻被踢出呢?嗯~沒錯是有可能,但是這麼晚了應該趕快去睡覺,而不是守在電腦前吧~~科科


參考網頁:

沒有留言:

張貼留言