![在正在运行的 Linux 机器上创建交换文件](https://linux22.com/image/561628/%E5%9C%A8%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%20Linux%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E5%88%9B%E5%BB%BA%E4%BA%A4%E6%8D%A2%E6%96%87%E4%BB%B6.png)
由于托管公司计划淘汰不太完全可靠的共享托管服务器,我们公司的网站刚刚从共享主机转移到 VDS。
VDS 仅有 256MB RAM 并托管几个站点,除一个站点外,其余站点都是非常简单的静态站点,只有几个页面,每天的访客总数不到 20-30 人。
我们的主要站点运行的是 OSCommerce 的定制版本,流量也很低(并发用户很少超过 10 个左右),但确实需要 MySQL。不幸的是,自从移动以来,mysqld 一直因内存不足而崩溃。我稍微编辑了 Apache 配置(以减少线程数)以减轻负载,但这只是回避了真正的问题。
服务器没有交换空间,但磁盘空间比我们所需的多得多,所以我正在考虑将其中一部分空间用于交换。我知道这对性能没有太大帮助,但我们可以忍受。
如何在服务器运行时创建交换文件并启用它?操作系统是 CentOS 5.5(最终版),Linux 不是我的母语。
更新:对于那些可能对结果感到疑惑的人来说,自从按照 quanta 的描述实施交换文件以来,服务器不仅稳定了,mysqld 不再崩溃,而且它实际上比以前更快地提供页面。性能提升与我的预期相反,但我很高兴这次我错了。
答案1
假设您要创建 512MB 的交换文件:
# dd if=/dev/zero of=/swapfile bs=1024 count=524288
设置交换区域:
# mkswap /swapfile
激活它:
# swapon /swapfile
添加/etc/fstab
为永久内容:
echo -e "/swapfile\t\tswap\t\tswap\t\tdefaults\t0 0" >> /etc/fstab
并用 进行验证free -m
。