博客遷移完騰訊雲之後, 又配置好了ssl,一直在調優PHP的性能,中午調整了半天fpm和opcache, 晚上又忽然想起來我以前在某個大會上分享過的使用tmpfs(把內存當成硬盤)來加速網站的作法,因而~搞!php
重要的事情要說三遍, 開始以前,對你對 nginx root 目錄要備份, 備份, 備份!html
騰訊雲這臺機器是ubuntu的,版本是:linux
$ cat /etc/issueUbuntu 18.04.4 LTS n l
首先,咱們建立一個目錄,好比/ramdisk,而後使用tmpfs命令掛載一部份內存看成硬盤:nginx
mount -t tmpfs -o size=256M tmpfs /ramdisk
此處我掛載了最大256M的內存到/tmp節點,值得注意的是系統不會一會兒就會把256M內存佔用,而是實際用多少佔多少,最大不超過256M。git
能夠用df來確認是否成功操做:github
$ df -h Filesystem Size Used Avail Use% Mounted on ...... tmpfs 256M 0 256M 0% /ramdisk
接下來咱們須要用到一個今天才發現的神器(之前還要本身寫corntab腳原本作同步:<),Anything-sync-daemon, 它能夠自動的把一個指定目錄同步到tmpfs,而且能設置按時,或者系統啓動時來自動同步,有了個這個工具,這一切都會變得很是簡單。面試
首先下載asd(Anything-sync-daemon):redis
wget https://github.com/graysky2/anything-sync-daemon/archive/master.zip
解壓縮以後,執行安裝:數據庫
make install-systemd-all
(這裏有個問題,默認的它會把systemd服務安裝到/usr/lib/systemd/system, 但不知道爲啥在個人這個系統不systemd找不到這個服務,我經過把它的幾個服務腳本拷貝到/lib/systemd/system解決)
mv asd-resync.service asd-resync.timer asd.service /lib/systemd/system
而後通知 systemd:ubuntu
systemctl daemon-reload
個人博客的nginx的root是/home/huixinchen/www/htdocs下, 咱們如今但願是這個目錄能自動同步到tmpfs目錄,也就是/ramdisk, 因而咱們修改asd.conf文件, 增長:
WHATTOSYNC=('/home/huixinchen/www/htdocs/') //要同步的目錄VOLATILE="/ramdisk" // tmpfs目錄
你也能夠同步多個文件,只須要逗號分隔寫在WHATTOSYNC數組裏便可,好比:
WHATTOSYNC=('/home/huixinchen/www/htdocs/', ‘/home/huixinchen/local/xxxx’) //要同步的目錄
而後咱們設置天天同步一次tmpfs上的變動內容到硬盤,編輯/lib/systemd/system/asd-resync.timer,
[Unit] Description=Timer for Anything-sync-daemon - 1Hour PartOf=asd-resync.service asd.service [Timer] OnUnitActiveSec=24h
而後咱們用asd p檢查下:
$ asd pAnything-sync-daemon v5.85 on Ubuntu 18.04.4 LTS Daemon pid file is not present. Resync cronjob is not present. Overlayfs technology is currently inactive. Asd will manage the following per /etc/asd.conf settings: owner/group id: huixinchen/1000 target to manage: /home/huixinchen/www/htdocs sync target: /home/huixinchen/www/.htdocs-backup_asd tmpfs target: /ramdisk/asd-huixinchen/home/huixinchen/www/htdocs dir size: 237M recovery dirs: none
asd 會把個人 /home/huixinchen/www/htdocs 目錄同步到 /ramdisk/asd-huixinchen/home/huixinchen/www/htdocs,
而且會把tmpfs上的更新內容按照時間寫回到
/home/huixinchen/www/.htdocs-backup_asd
當咱們中止asd的服務的時候,asd會把.htdocs-backup_asd在mv成htdocs,這樣就不用擔憂你的內容會由於服務器忽然斷電丟失了.
如今,讓咱們啓動asd:
service asd start
如今/home/huixinchen/www/htdocs就會被複制到tmpfs, 而且軟連接過去,也就是說nginx咱們根本不須要修改, 只須要重啓一下fpm, 重置一下opcache的cache便可:
$ ll total 0K lrwxrwxrwx 1 huixinchen huixinchen 50 Feb 15 22:27 htdocs -> /ramdisk/asd-huixinchen/home/huixinchen/www/htdocs/
重啓完 fpm,一切works out of the box!
PS:關於Asd更多的信息,能夠參考:Anything-sync-daemon
https://wiki.archlinux.org/in...
來源:https://www.laruence.com/2020...
做者:laruence
最新整理的 2TB 技術乾貨:包括架構師實戰教程、大數據、Docker容器、系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、ELK Stack、機器學習、BAT面試精講視頻等。只需在「 民工哥技術之路」微信公衆號對話框回覆關鍵字:1024便可獲取所有資料。