会有客户使用 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