内容简介:博客迁移完腾讯云以后, 又配置好了ssl,一直在调优PHP的性能,中午调整了半天fpm和opcache, 晚上又突然想起来我之前在某个大会上分享过的使用tmpfs(把内存当成硬盘)来加速网站的做法,于是~搞!重要的事情要说三遍, 开始之前,对你对nginx root目录要备份, 备份, 备份!腾讯云这台机器是ubuntu的,版本是:
博客迁移完腾讯云以后, 又配置好了ssl,一直在调优 PHP 的性能,中午调整了半天fpm和opcache, 晚上又突然想起来我之前在某个大会上分享过的使用tmpfs(把内存当成硬盘)来加速网站的做法,于是~搞!
重要的事情要说三遍, 开始之前,对你对nginx root目录要备份, 备份, 备份!
腾讯云这台机器是ubuntu的,版本是:
$ cat /etc/issue Ubuntu 18.04.4 LTS \n \l
首先,我们创建一个目录,比如/ramdisk, 然后使用tmpfs命令挂载一部分内存当作硬盘:
mount -t tmpfs -o size=256M tmpfs /ramdisk
此处我挂载了最大256M的内存到/tmp节点,值得注意的是系统不会一下子就会把256M内存占用,而是实际用多少占多少,最大不超过256M。
可以用df来确认是否成功操作:
$ df -h Filesystem Size Used Avail Use% Mounted on ...... tmpfs 256M 0 256M 0% /ramdisk
接下来我们需要用到一个今天才发现的神器(以前还要自己写corntab脚本来做同步:<), Anything-sync-daemon , 它可以自动的把一个指定目录同步到tmpfs,并且能设置按时,或者系统启动时来自动同步,有了个这个工具,这一切都会变得非常简单。
首先下载asd( Anything-sync-daemon ):
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:
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 p Anything-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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- CentexHosting大硬盘VPS测评:4G内存300G硬盘2个IP,洛杉矶机房
- 存储硬件知识:什么是内存频率、时序和硬盘文件系统
- 硬盘的原理以及SQL Server如何利用硬盘原理减少IO
- Proxmox 设定直通硬盘
- 硬盘的秘密
- 固态硬盘纠错算法的前世今生
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。