(编辑:jimmy 日期: 2024/11/20 浏览:2)
问题来源
想在买的VPS上搭点博客服务,偏爱于动态博客之类的,选用了nodejs,范围一下就减小了,一开始看中了N-blog。需要安装bower,如果在安装的时候,一直提示npm版本问题:
npm WARN deprecated This version of npm lacks support for important features, npm WARN deprecated such as scoped packages, offered by the primary npm npm WARN deprecated registry. Consider upgrading to at least npm@2, if not the npm WARN deprecated latest stable version. To upgrade to npm@2, run: npm WARN deprecated npm WARN deprecated npm -g install npm@latest-2 npm WARN deprecated npm WARN deprecated To upgrade to the latest stable version, run: npm WARN deprecated npm WARN deprecated npm -g install npm@latest npm WARN deprecated npm WARN deprecated (Depending on how Node.js was installed on your system, you npm WARN deprecated may need to prefix the preceding commands with `sudo`, or if npm WARN deprecated on Windows, run them from an Administrator prompt.) npm WARN deprecated npm WARN deprecated If you're running the version of npm bundled with npm WARN deprecated Node.js 0.10 LTS, be aware that the next version of 0.10 LTS npm WARN deprecated will be bundled with a version of npm@2, which has some small npm WARN deprecated backwards-incompatible changes made to `npm run-script` and npm WARN deprecated semver behavior.
提示其实很清楚,是说npm版本太低,有一些特性不支持。参照提示,执行
npm -g install npm@latest
同样先出现一屏提示,毕竟npm在这个时刻还没有升级,等了几十秒钟后,出现了如下
......以上省略 npm WARN deprecated backwards-incompatible changes made to `npm run-script` and npm WARN deprecated semver behavior. Killed
如果不细心,就发现莫名其妙的结束了,而npm也没有更新。仔细看,会发现最后一行出现一个Killed提示。 到网上一搜,可以发现,这个是因为内存不够,服务器内存不够,于是程序就直接结束了。其实如果VPS内存较小的话,不仅在安装nodejs库的时候会出现问题,直接使用yum安装包的时候,也会提示Cannot allocate memory的Error。
Solution
升级VPS配置
最简单的办法当然是升级VPS配置了,这个去网页上点点按钮就可以,只要掏钱就行。 对个人玩家而言,不过是用VPS上搭点个人网站、折腾点小玩意,没多大流量,往往不需要太好的配置。于是,就采用下面一个办法了,增加交换文件。
SWAP FILE
我们平时听得更多的可能是交换分区,就是直接在硬盘上单独分一个区来当作交换空间使用。如果是在系统已经安装好后,不方便新建分区,可以使用文件来替代。 交换空间实质就是硬盘,在系统中用作内存的一个较大的缓存,操作系统内存不够用的时候,会把一些不常用的页替换到交换空间里面。所以,交换空间会改善一些系统的性能。 但交换空间不是越大越好,因为应用程序如果刚好用到了交换空间的数据,这个时候会有一个比较大的延迟,太大的交换分区会导致大量的应用程序高延迟的情况出现。所以,如果程序有大内存需求,最好的办法还是增加物理内存。买内存才是王道,交换空间只是一个稍微改善性能的途径而已。
CentOS7设置交换文件
检查系统条件
首先,检查系统是否已经设置了交换空间,原则上,交换空间尽量只设置一个。另外,也需要检查,系统是否有足够剩余硬盘空间。
swapon -s
可以通过swapon命令查看系统的交换空间,或者,也可以通过free命令来查看。
free -h
通过df命令,来检查系统的剩余硬盘空间。
df -h
创建swap文件
通过fallocate命令来新建一个交换文件,由于我的系统内存是512M,交换分区一般设置为内存了2~4倍,所以我设置成了1G,直接挂载到根目录下。
sudo fallocate -l 1G /swapfile
可以通过ls命令来查看
ls -lh /swapfile
结果如下
-rw-r--r-- 1 root root 1.0G Oct 30 11:00 /swapfile
启用交换文件
首先,修改/swapfile权限,只允许root用户访问。
sudo chmod 600 /swapfile
ls的结果如下
-rw------- 1 root root 1.0G Oct 30 11:00 /swapfile
接下来,通知系统创建交换空间
sudo mkswap /swapfile
最后,启用交换空间
sudo swapon /swapfile
可以通过swapon -s或者df -h命令来查看结果,交换空间应该会显示出来。
持久化配置
重启后,系统就不会再将/swapfile设置为交换空间了。 可以在/etc/fstab中添加如下
/swapfile swap swap sw 0 0
这样,重启后系统会自动将/swapfile映射为交换空间。
最后
可以想象,如果实际内存需求远超物理内存大小,会频繁的出现内存和交换空间的数据交换情况,对硬盘的损伤是比较大的。而且,应用体验也会比较差。
所以,交换空间只是临时解决办法,买内存条才是王道。