使用内存硬盘(tmpfs)来加速你的网站
介绍
博客迁移完腾讯云以后, 又配置好了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)来加速你的网站相关推荐
- MacOS内存硬盘APFS RAMDisk加速Chrome缓存
====创建内存硬盘RAMDisk==== ==打开Terminal终端== $ diskutil erasevolume HFS+ 'RAM_Disk' `hdiutil attach -nomou ...
- 处理器仿存带宽_linux服务器CPU内存硬盘读写带宽等性能测试方法
如何对一个VPS主机进行CPU内存,硬盘IO读写,带宽速度等项目测试,像UnixBench和压力测试则可以综合反映一个VPS的性能水平,方便大家对照参考. VPS性能测试:CPU内存,硬盘IO读写,带 ...
- Redis+Mysql模式和内存+硬盘模式的异同
学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟,成果让人欣喜若狂,心情也会快乐很久. redis+mysql和内存+硬盘类似的地方 首先看图 首先,我们知道,m ...
- 一个用了统计CPU 内存 硬盘 使用率的shell脚本
一个用了统计CPU 内存 硬盘 使用率的shell脚本 一个统计 CPU 内存 硬盘 使用率的shell脚本,供大家学习参考 代码如下: #!/bin/bash #This script is use ...
- linux查看共享内存max,浅析Linux的共享内存与tmpfs文件系统
浅析Linux的共享内存与tmpfs文件系统 前言 共享内存主要用于进程间通信,Linux有两种共享内存(Shared Memory)机制: (1)** System V shared memory( ...
- redis mysql windows_Redis+Mysql模式和内存+硬盘模式的异同
学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟,成果让人欣喜若狂,心情也会快乐很久. redis+mysql和内存+硬盘类似的地方 首先看图: 首先,我们知道, ...
- 计算机的组成 —— 存储(内存/硬盘)
storage(存储器,如硬盘),memory:内存 硬盘的读写原理 CPU 和 内存(memory)是由许多晶体管组成的电子部件,通常称为 IC(Integrated Circuit,集成电路). ...
- 【MacOS】Hammerspoon-sugood多合一效率工具,新增状态栏显示系统信息(CPU/内存/硬盘/网速)-v0.1.7
运行环境要求 已测试可用的系统:MacOS 10.14 及以上 脚本功能说明 Github(国外地址) Gitee(国内地址) 已完成如下功能 状态栏显示输入法状态 时间同步功能 屏幕取色功能 JSO ...
- ubuntu下查看电脑内存硬盘CPU显卡驱动等配置命令
ubuntu16.04查看电脑内存硬盘CPU显卡驱动等配置命令 按Ctrl+Alt+T键,调出终端窗口. 1.内存总大小:free -m mem:后面的 total 栏显示你的内存总大小. 如图:内存 ...
最新文章
- 厉害了,为了干掉 HTTP ,Spring团队又开源 nohttp 项目!
- 26期20180626 rpm 安装软件包的方法 yum
- 软件工程概论课程总结
- Python 正则表达式-问号的四种用法
- 利用Eclipse连接JDBC-(SQL Server2008)
- 一文读懂图卷积GCN
- 详解联邦学习Federated Learning
- ae可围绕帧拖动放大插件:Drag Zoom Pro for AE mac(兼容M1)
- 基于CAShapeLayer和贝塞尔曲线的圆形进度条动画
- 字符串16进制数字转换到Ascll字符串
- Python工作笔记007---win10安装Python3.7.3_以及用pycharm创建Python项目_以及对System interpreter理解
- Asset mangagement Resources(完善中)
- window10设置文件夹备注
- 线程池的实现原理分析
- 汇编语言王爽 实验九
- Mac下修改HD3000显存到1GB
- 阶段性总结(从软件工程到分层架构)
- Python基础了解 python自带IDLE编译
- 预制菜开启春节之战,破局立新正在进行时
- Spring boot带来的信息泄露