给 Azure 上的 Linux 3CX 添加 Swap 空间避免内存耗尽

会有客户使用 Linux 3CX 时遇到这样的错误:

localhost kernel: Out of memory: Kill process 2154 (3CXManagementConsole) score 369 or sacrifice child

这里我们提供一个简单的办法:在临时磁盘上添加 Swap 空间。当系统中有效的内存被耗尽时,LInux 会将部分内存卸载到硬盘上速度更慢的 Swap 空间上。按照以下说明进行操作,您将通过 Swap 运行 3CX 实例!

给 Azure 实例添加 Swap

使用 SSH 进程连接到 Azure Linux 实例,并切换到 root 用户:

查看硬盘还有多少余量:

$ df -h

使用 nano 编辑 Azure Linux Agent 配置文件:

$ nano /etc/waagent.conf

修改下列参数:

ResourceDisk.Format=yResourceDisk.EnableSwap=yResourceDisk.SwapSizeMB=4096

其中 ResourceDisk.SwapSizeMB 的值改为你要分配给 Swap 的空间大小。这个值可以设置为目前系统已有内存的大小。同时也要确保有足够的空间可以被分配。

按下 Ctrl + X,然后输入 Y,最后输入回车退出 nano 编辑器并保存 “waagent.conf” 文件。

重启 Azure Linux Agent 服务:

$ service waagent restart

查看 swap 文件是否可用:

$ swapon -s

如果您按照说明进行操作,但是此时 Swap 文件不可用,则可以尝试使用以下方法重新启动虚拟机:

$ shutdown -r now

⚠警告:

  • 确保为 Swap 文件分配的空间不超过磁盘上的可用空间,否则,您可能会遇到异常的系统行为,包括无法登录到系统。
  • 另外,调整 VM 大小时请小心,因为可用磁盘空间可能会减少到导致上述问题。

Swap

就是这样!使用新安装的 Swap 文件,Linux 内核可以将不经常使用的已分配内存移动到 Swap 中,以确保增加 3CX 的内存可用性。现在,您的 Azure 3CX 实例可以在内存方面更自由地 “呼吸”,而不会给内存资源造成压力甚至导致系统卡顿。

$ free -h