php编译fileinfo时报内存不足的解决方案

今天帮客户部署应用到服务器上,发现客户的服务器php环境没有安装fileinfo扩展,因为项目里面需要用到这个fileinfo扩展,所以需要帮客户重新安装上这个模块。但是在安装的到make步骤的时候,服务器实然报内存不够的错误。

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/e3d1a19217fbe28ced8dd5d934e3d849.png

使用htop命令查看发现服务器只有1G内存

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/8f0b7c3c74bcde06e42c4fcfe6bb544e.png

这种问题可以通过花钱加内存解决,但是本着为客户钱包着想。就只好采用另外一个解决方案了

那就是采用临时加大虚拟内存的方法

我们先查看一下现在系统的虚拟内存是多少

free -m

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/89dcbcf6e0a9beced0584f4a2da37433.png

可以看到现在服务器的并没有使用虚拟内存,现在swap为0

首先我们需要创造一个目录来作为虚拟内存的交换文件存放目录

mkdir -p /opt/images

创建一个2G大小的普通文件

dd if=/dev/zero of=/opt/images/swap bs=1024 count=2048000

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/58d29569b9926a2a818cce5f534c426e.png

使用mkswap命令来将/opt/images/swap这个普通的文件上建立交换分区

mkswap /opt/images/swap

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/18d17ba6996065145d337a1d1a052987.png

使用swapon命令来激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存

swapon /opt/images/swap

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/9c523ccd0b3a2b0e1d45955360856117.png

最后我们查看一下虚拟内存是多少

free -m

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/1add4b3655bd5ee721a928098175e50c.png

可以看到我们现在的虚拟内存已经是2G的了

最后我们重新在fileinfo模块的源代码目录执行make就完成了

make clean && make && make install

https://static.ithome.io/upload/file/99493904-baf8-82d4-aa13-72ecb40fcd27/article_temp/20190921/e95cae3fde7cb65867cd8fad7b3b8c02.png

最后我们可以通过swapoff这个命令来关闭虚拟内存

swapoff /opt/images/swap


0条评论