目前最快的磁盘,哪怕是SSD阵列也达不到内存的读写速度,特别是琐碎小文件的随机读取方面,差别更大。
所以呢,今天捣鼓了一下,把网站所有内容放在内存里面,IO效率快到没朋友,分享一下做法。
物理盘的网站路径是/var/www/www.tingtao.org
首先,Linux系统默认有一个挂载点是内存文件系统,默认大小是内存的一半,在这里的操作就是纯内存操作,但是重启系统后会消失,所以要留个后路。
Debian系统的路径是/dev/shm,ubuntu估计也是,其他的可能有区别。
首先创建新的网站路径:
mkdir -p /dev/shm/web/www.tingtao.org/ chown -R www.tingtao.org:www.tingtao.org /dev/shm/web/www.tingtao.org/ chmod -R 755 /dev/shm/web/www.tingtao.org/
把物理盘的文件复制过去以后,对应的修改站点的nginx配置文件路径,以及php-fpm的对应配置文件,跟原先配置对比只是改动路径,这里就不列举了。
重启php-fpm和nginx,网站应该运行起来了,然后来给数据留个后手:
简单的定时把文件复制到物理盘,这个倒是简单,但拓展一下,假设要同步数据到本级和其他机器呢,全都可以用rsync,所以本文用这个一劳永逸。
在目标机器的rsync配置里面加一段:
[wwwtingtaoorg] uid=www.tingtao.org gid=www.tingtao.org path=/var/www/www.tingtao.org/ igonre errors read only=no list=yes auth users=rsyncuser secrets file=/etc/rsyncuser.txt
最后,同步命令如下:
rsync --port=6110 -vzrt --progress --password-file="/root/rsyncuser.txt" --delete /dev/shm/web/www.tingtao.org/ rsyncuser@127.0.0.1::wwwtingtaoorg/
本文的同步目标是本机,其他机器的话把地址改了就可以了,也可以放在cron任务里面自动同步。
备注一下,使用本文做法的前提是有足够大的内存,而且至少要比网站容量大出一个数量级;同时关于备份的频率问题要根据自己情况来做,更新不频繁的话,每次更新以后手工同步就可以了,较频繁的话最好是做cron任务。