Laravel Forge创建的EC2 t2.nano实例PECL安装GRPC卡住无进展
你判断的没错,问题就是t2.nano实例的内存不足导致的。grpc扩展从源码编译需要至少1.5G以上的运行内存,而t2.nano仅配置0.5G物理内存,无默认swap分区,编译过程中内存耗尽后进程会被系统中断,pecl会自动重试编译步骤,就会出现你看到的重复执行相同编译命令的卡顿现象。
可选择以下任意一种方法解决:
- 方法一:临时升级EC2实例规格
先将EC2实例临时升级为t2.small(1G内存)或更高配置,完成grpc扩展编译安装后,再将实例规格降回t2.nano即可,操作不会丢失服务器内的现有数据。 - 方法二:添加swap分区补足内存
不需要调整实例规格,直接给服务器临时添加2G swap分区即可满足编译需求,执行命令如下:
执行完成后重新运行sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfilesudo pecl install grpc即可正常编译。扩展安装完成后可执行sudo swapoff /swapfile && sudo rm /swapfile删除swap分区释放磁盘空间。 - 方法三:安装预编译的grpc扩展包(推荐)
完全跳过源码编译步骤,直接使用系统源提供的预编译扩展包,Debian/Ubuntu系统下对应你的PHP版本执行安装即可,比如PHP8.0版本执行:sudo apt install php8.0-grpc
安装完成后自动启用扩展,全程仅需几秒,对服务器配置无要求。
安装完成后执行php -m | grep grpc,如果输出grpc则说明扩展安装成功。
内容的提问来源于stack exchange,提问作者Lewis Smith
相关产品推荐
相关产品推荐

