介绍

博客迁移完腾讯云以后, 又配置好了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 LTSDaemon 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/index.php/anything-sync-daemon

来源:https://www.laruence.com/2020/02/15/4982.html,作者:laruence

参考链接 :

https://mp.weixin.qq.com/s/O-dro7GDbCtrnLLicoIc1A

使用内存硬盘(tmpfs)来加速你的网站相关推荐

  1. MacOS内存硬盘APFS RAMDisk加速Chrome缓存

    ====创建内存硬盘RAMDisk==== ==打开Terminal终端== $ diskutil erasevolume HFS+ 'RAM_Disk' `hdiutil attach -nomou ...

  2. 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法

    如何对一个VPS主机进行CPU内存,硬盘IO读写,带宽速度等项目测试,像UnixBench和压力测试则可以综合反映一个VPS的性能水平,方便大家对照参考. VPS性能测试:CPU内存,硬盘IO读写,带 ...

  3. Redis+Mysql模式和内存+硬盘模式的异同

    学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟,成果让人欣喜若狂,心情也会快乐很久. redis+mysql和内存+硬盘类似的地方 首先看图 首先,我们知道,m ...

  4. 一个用了统计CPU 内存 硬盘 使用率的shell脚本

    一个用了统计CPU 内存 硬盘 使用率的shell脚本 一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 代码如下: #!/bin/bash #This script is use ...

  5. linux查看共享内存max,浅析Linux的共享内存与tmpfs文件系统

    浅析Linux的共享内存与tmpfs文件系统 前言 共享内存主要用于进程间通信,Linux有两种共享内存(Shared Memory)机制: (1)** System V shared memory( ...

  6. redis mysql windows_Redis+Mysql模式和内存+硬盘模式的异同

    学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟,成果让人欣喜若狂,心情也会快乐很久. redis+mysql和内存+硬盘类似的地方 首先看图: 首先,我们知道, ...

  7. 计算机的组成 —— 存储(内存/硬盘)

    storage(存储器,如硬盘),memory:内存 硬盘的读写原理 CPU 和 内存(memory)是由许多晶体管组成的电子部件,通常称为 IC(Integrated Circuit,集成电路). ...

  8. 【MacOS】Hammerspoon-sugood多合一效率工具,新增状态栏显示系统信息(CPU/内存/硬盘/网速)-v0.1.7

    运行环境要求 已测试可用的系统:MacOS 10.14 及以上 脚本功能说明 Github(国外地址) Gitee(国内地址) 已完成如下功能 状态栏显示输入法状态 时间同步功能 屏幕取色功能 JSO ...

  9. ubuntu下查看电脑内存硬盘CPU显卡驱动等配置命令

    ubuntu16.04查看电脑内存硬盘CPU显卡驱动等配置命令 按Ctrl+Alt+T键,调出终端窗口. 1.内存总大小:free -m mem:后面的 total 栏显示你的内存总大小. 如图:内存 ...

最新文章

  1. 厉害了,为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
  2. 26期20180626 rpm 安装软件包的方法 yum
  3. 软件工程概论课程总结
  4. Python 正则表达式-问号的四种用法
  5. 利用Eclipse连接JDBC-(SQL Server2008)
  6. 一文读懂图卷积GCN
  7. 详解联邦学习Federated Learning
  8. ae可围绕帧拖动放大插件:Drag Zoom Pro for AE mac(兼容M1)
  9. 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
  10. 字符串16进制数字转换到Ascll字符串
  11. Python工作笔记007---win10安装Python3.7.3_以及用pycharm创建Python项目_以及对System interpreter理解
  12. Asset mangagement Resources(完善中)
  13. window10设置文件夹备注
  14. 线程池的实现原理分析
  15. 汇编语言王爽 实验九
  16. Mac下修改HD3000显存到1GB
  17. 阶段性总结(从软件工程到分层架构)
  18. Python基础了解 python自带IDLE编译
  19. 预制菜开启春节之战,破局立新正在进行时
  20. Spring boot带来的信息泄露

热门文章

  1. 安全测试工具_选型必看:DevOps中的安全测试工具推荐
  2. R_地图上的迷你直方图
  3. java 代码解析工具_改善 Java 代码质量的工具与方法
  4. Django 前后端数据传输、ajax、分页器
  5. busybox inetd tftpd
  6. 八、IO优化(3)稀疏列
  7. H.264的三种开源编码器比较
  8. hdu 4279Number(数论)
  9. 从yield 到yield from再到python协程
  10. C++的四种cast操作符的区别--类型转换