设置阿里云ECS的swap

本文总结了在安装GitLab时遇到的内存分配问题及解决方案,包括增加swap空间、设置自动挂载、调整swappiness参数等步骤,以确保系统在处理大量数据时的稳定性和效率。

安装 gitlab[1] [2] [3] 时碰到的问题。中间出现几次内存分配的问题,其中添加 ssh key 导致 500 错误,我 1G 内存跑了apache nginx mysql,以为内存不够用,确实不够用。找了好多,提到减少 unicorn.rb 里的 worker_processes 节省内存,后又有文章提到没有swap。我才想到阿里云有可能没有swap,搜一下果然没有。

我这里总结一下参考的文章所进行的操作(需要 root 权限):

1. dd if=/dev/zero of=/mnt/swapfile bs=1MB count=1024    

这个 bs 的单位可以用 man dd 进行查看,有详细的说明,我这里创建 1G 

2. mkswap /mnt/swapfile

这里把刚才创建的文件做成swap文件

3. swapon /mnt/swapfile

开启swap

4. swapon -s

查看状态

5. free -m

查看内存状态

=========以下操作能确保 swap 更安全,且重启后有效===========

6. vim /etc/rc.local

查看 vim /etc/rc.local 如果有 swapoff -a 修改为 swapon -a

7. vim /etc/fstab 

/mnt/swapfile swap swap defaults 0 0

设置自动挂载

8. chown root:root /mnt/swapfile 

    chmod 0600 /mnt/swapfile

权限设置

9. cat /proc/sys/vm/swappiness

    sysctl vm.swappiness=10

查看 swappiness 值,如果为 0 ,则将其改为 10

10. vim /etc/sysctl.conf

永久设置 swappiness,如果该文件里没有,则追加 vm.swappiness = 10

重启,那些永久设置项就生效了。

摘抄一句:swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面


参照:

http://jonathanmh.com/running-gitlab-on-digital-ocean/

http://hostingformula.net/gitlab-500-error-when-add-ssh-key/

http://stackoverflow.com/questions/26777690/gitlab-500-error-when-adding-removing-ssh-key

https://help.aliyun.com/knowledge_detail/5988582.html

http://www.cnblogs.com/guanjie20/archive/2013/04/24/3042584.html

### 如何在阿里云服务器上扩大内存 阿里云服务器(ECS)的内存配置通常是根据实例规格预先设定好的。如果需要增加内存,可以通过升级实例规格来实现。以下是具体的步骤和方法: #### 1. **升级实例规格** - 在阿里云控制台中找到目标ECS实例。 - 进入实例详情页面后,选择“变配”功能。 - 在变配页面中,可以选择更高的实例规格,例如从2核2GB升级到4核8GB或更高[^2]。 - 注意:升级实例规格可能会导致短暂的停机时间,具体取决于是否支持热升级。 #### 2. **调整操作系统中的SWAP分区** 如果无法直接升级实例规格,可以考虑通过增加SWAP分区来间接提升可用内存。以下是具体步骤: ```bash # 检查当前SWAP分区状态 free -h # 创建SWAP文件 sudo fallocate -l 2G /swapfile # 设置SWAP文件权限 sudo chmod 600 /swapfile # 格式化SWAP文件 sudo mkswap /swapfile # 启用SWAP文件 sudo swapon /swapfile # 验证SWAP文件是否生效 free -h # 将SWAP设置为开机自动挂载 echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ``` #### 3. **使用弹性伸缩服务** 阿里云提供了弹性伸缩(Auto Scaling)服务,可以根据业务需求动态调整实例规格。当检测到内存不足时,可以自动扩展实例资源[^1]。 #### 4. **优化应用程序内存使用** 在某些情况下,增加内存可能并不是最佳解决方案。可以通过优化应用程序代码、减少内存泄漏等方式降低内存消耗。例如: - 使用更高效的算法和数据结构。 - 定期清理无用的缓存数据。 - 调整数据库连接池大小以减少内存占用。 ```python # 示例:Python程序中释放未使用的对象 import gc def release_memory(): gc.collect() ``` ### 注意事项 - 升级实例规格可能会产生额外费用,请提前评估预算。 - 在操作前建议对实例进行快照备份,以防止数据丢失。 - 如果实例运行的是生产环境应用,建议在非高峰时段进行变配操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值