更新时间:2020-06-08 21:06
本文主要介绍由低版本升级到专有云V3.5后,5U操作系统Docker宿主机负载过高的解决方法。
说明:
- 适用于专有云V3.5及以上版本,并且Docker宿主机是5U操作系统的项目,哪台Docker宿主机出现负载高导致夯机,经过阿里云技术支持排查后,再添加每天清理cache的计划任务,未出现此现象的机器不可用。
- 当出现负载过高的问题时,先由阿里云技术支持排查确认问题相似后,再使用此变更方案。
说明:无风险。
在专有云V3.5及以上版本中,Docker宿主机使用5U系统。在升级时,多次出现Docker宿主机有负载高的现象,影响升级,甚至影响到客户业务,最终判断是5U内核内存缺陷导致该问题。在5U内核下暂无根本解决方法,短期采用物理机提高内存使用率的水位线且定期清理缓存来缓解,固化的方法则需要升级到7U内核。
登录Docker宿主机,执行以下命令,查看内核版本,5U内核的版本都需要进行操作。本文以2.6.32-220.23.2.ali1113.el5.x86_64
为例,包括但不限于el5系列的内核。
uname -r
cat /proc/sys/vm/min_free_kbytes确认不符合以下预期数值,需要进行修改,以实际环境为准。
注意:如果符合预期数值则无需修改。
grep "vm.min_free_kbytes" /etc/sysctl.conf系统显示类似如下,如果已经有固化配置,且是预期数值,则无需再修改。
crontab -l确认不存在符合预期的以下定时任务,需要进行修改,以实际环境为准。
注意:确认存在预期的定时任务则无需修改。
tj_show -r="pangu.PanguTools#"
puadmin gems系统显示类似如下。
echo 8192000 > /proc/sys/vm/min_free_kbytes
echo "vm.min_free_kbytes = 8192000" >> /etc/sysctl.conf
cp /var/spool/cron/root /var/spool/cron/root.bak
echo "0 0 * * * echo 1 > /proc/sys/vm/drop_caches" >> /var/spool/cron/root
说明:
- 建议每台机器执行定时任务的时间分散,间隔五分钟,如一台机器是0点执行定时任务,另一台机器0点5分执行定时任务,下一台机器0点10分执行定时任务。
- 哪台Docker宿主机出现负载高导致夯机,经过阿里云技术支持排查后,再添加每天清理cache的计划任务,未出现此现象的机器不可用。
验证内核参数和定时任务是否修改。
cat /proc/sys/vm/min_free_kbytes系统显示类似如下。
执行以下命令,确认固化配置已添加。
grep "vm.min_free_kbytes" /etc/sysctl.conf系统显示类似如下。
crontab -l系统显示类似如下。
注意:如果现场设置的不是每天0点执行定时任务,则以实际环境的验证为准。
echo [$Num] > /proc/sys/vm/min_free_kbytes
说明:[$Num]为确认内核参数和定时任务是否符合预期步骤中记录内核参数的值。
/etc/sysctl.conf
文件中的vm.min_free_kbytes = 8192000
所在行。/var/spool/cron/root
文件,删除以下配置。
注意:可以使用crontab -e
命令编辑定时任务,然后删除以下配置。
0 0 * * * echo 1 > /proc/sys/vm/drop_caches
说明:因为定时任务执行的时间分散,需按实际情况处理。
cat /proc/sys/vm/min_free_kbytes
grep "vm.min_free_kbytes" /etc/sysctl.conf
crontab -l
在文档使用中是否遇到以下问题
更多建议
匿名提交