轉載自 heyuejuan最終編輯 heyuejuan
/dev/shm/是linux下一個非常有用的目錄,因為這個目錄不在硬碟上,而是在記憶體裡。因此在linux下,就不需要大費周折去建ramdisk,直接使用/dev/shm/就可達到很好的最佳化效果。 /dev /shm/需要注意的一個是容量問題,在linux下,它預設最大為記憶體的一半大小,使用df -h命令可以看到。但它並不會真正的佔用這塊記憶體,如果/dev/shm/下沒有任何檔案,它佔用的記憶體實際上就是0位元組;如果它最大為1G,裡頭放有 100M檔案,那剩餘的900M仍然可為其它應用程式所使用,但它所佔用的100M記憶體,是絕不會被系統回收重新劃分的,否則誰還敢往裡頭存檔案呢? 預設的最大一半記憶體大小在某些場合可能不夠用,並且預設的inode數量很低一般都要調高些,這時可以用mount命令來管理它。 mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm 在2G的機器上,將最大容量調到1.5G,並且inode數量調到1000000,這意味著大致可存入最多一百萬個小檔案。 為當/dev/shm空間不夠時可以佔用swap的空間,所以不用擔心儲存空間不夠用。想想看,從磁碟IO操作到記憶體操作,php讀寫SESSION的速度會快多少?只是需要注意,儲存在/dev/shm的資料,在伺服器重啟後會全部丟失。 預設系統就會載入/dev/shm ,它就是所謂的tmpfs,有人說跟ramdisk(虛擬磁碟),但不一樣。象虛擬磁碟一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換分區來儲存。而且傳統的虛擬磁碟是個塊裝置,並需要一個 mkfs 之類的命令才能真正地使用它,tmpfs 是一個檔案系統,而不是塊裝置;您只是安裝它,它就可以使用了。 tmpfs有以下優勢: 1,動態檔案系統的大小。 2,tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 檔案系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。 3,tmpfs 資料在重新啟動之後不會保留,因為虛擬記憶體本質上就是易失的。所以有必要做一些指令碼做諸如載入,綁定的操作。 好了講了一些大道理,還是講講應用吧: 首先在/dev/stm建個tmp檔案夾,然後與實際/tmp綁定 mkdir /dev/shm/tmp chmod 1777 /dev/shm/tmp mount --bind /dev/shm/tmp /tmp(--bind ) 在使用mount --bind olderdir newerdir命令來掛載一個目錄到另一個目錄後,newerdir的許可權和所有者等所有資訊會發生變化。掛載後的目錄繼承了被掛載目錄的所有屬性,除了名稱。 巧用tmpfs加速你的linux伺服器,就是使用虛擬磁碟來存放squid的快取檔案和php的seesion。速度快不少哦! 默 認系統就會載入/dev/shm ,它就是所謂的tmpfs,有人說跟ramdisk(虛擬磁碟),但不一樣。象虛擬磁碟一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換分區來儲存。而且傳統的虛擬磁碟是個塊裝置,並需要一個 mkfs 之類的命令才能真正地使用它,tmpfs 是一個檔案系統,而不是塊裝置;您只是安裝它,它就可以使用了。 tmpfs有以下優勢: 1。動態檔案系統的大小, 2。tmpfs 的另一個主要的好處是它閃電般的速度。因為典型的 tmpfs 檔案系統會完全駐留在 RAM 中,讀寫幾乎可以是瞬間的。 3。tmpfs 資料在重新啟動之後不會保留,因為虛擬記憶體本質上就是易失的。所以有必要做一些指令碼做諸如載入,綁定的操作。 好了講了一些大道理,大家看的煩了吧,還是講講我的應用程式吧:) 首先在/dev/shm建個tmp檔案夾,然後與實際/tmp綁定 mkdir /dev/shm/tmp chmod 1777 /dev/shm/tmp mount --bind /dev/shm/tmp /tmp 1. squid的緩衝目錄設定 vi /etc/squid/squid.conf 修改成 cache_dir ufs /tmp 256 16 256 這 裡的第一個256表示使用256M記憶體,我覺得http://www.linuxaid.com.cn/articles/4/4 /441672019.shtml裡使用ramdisk的方法還不如直接使用tmpfs,至少每次啟動不用mkfs,還可以動態改變大小。這時的/tmp 實際就是/dev/shm/tmp 然後重啟一下服務,ok,現在所有的squid快取檔案都儲存倒tmpfs檔案系統裡了,很快哦。 2. 對php效能的最佳化 對於一個訪問量大的以apache+php的網站,可能tmp下的臨時檔案都會很多,比如seesion或者一些快取檔案,那麼你可以把它儲存到tmpfs檔案。 儲存seesion的方法很簡單了只要修改php.ini就行了,由於我已經把/dev/stm/tmp與/tmp綁定,所以不改寫也行,至於php程式產生的快取檔案那隻能改自己的php程式了:) 至於tmpfs的其他應用,我想大家可能通過這篇文章會有所啟發。 |