龙空技术网

Linux系统hung住无法ssh登录的解决办法

JasonTang 680

前言:

现在姐妹们对“linux无法写入”都比较注意,同学们都需要学习一些“linux无法写入”的相关资讯。那么小编同时在网络上网罗了一些有关“linux无法写入””的相关文章,希望同学们能喜欢,小伙伴们快快来学习一下吧!

摘要:今天有台服务器的应用没有响应,SSH远程也无法登录。通过控制台界面查看该Linux系统,出现多个错误信息echo 0 /proc/sys/kernel/hung_task_timeout,初步断定系统hung住了。

本文将呈现本初问题的解决过程,详细内容请参考下文。

一、出现问题

1、错误信息

2、问题状况

系统中的缓存数据过大导致系统中的应用无法访问,SSH远程登录不成功。

二、分析问题

说明:文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据)。写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到磁盘。这对加速磁盘I/O有很好的效果,但是当数据未写入磁盘时,丢失数据的可能性会增加。

当然,也存在缓存被写爆的情况。还可能出现一次性往磁盘写入过多数据,以致使系统卡顿。这些卡顿是因为系统认为,缓存太大用异步的方式来不及把它们都写进磁盘,于是切换到同步的方式写入。

1、默认情况下, Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘,导致后续的IO请求都是同步的。

将缓存写入磁盘时,有一个默认120秒的超时时间。 出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。

2、初步认为应该是内存的清理机制出问题,优化处理。

三、解决问题

1、根据应用程序实际情况,由于服务器上所运行的应用都是需要短时间响应大量的访问,因此需要对vm.dirty_ratio,vm.dirty_background_ratio两个参数进行调优设置。增加方框内的两项内容:

2、需要说明的是,先达到vm.dirty_background_ratio的条件然后触发flush进程进行异步的回写操作,但是这一过程中应用进程仍然可以进行写操作,如果多个应用进程写入的量大于flush进程刷出的量那自然会达到vm.dirty_ratio这个参数所设定的坎,此时操作系统会转入同步地处理脏页的过程,阻塞应用进程。

3、通过修改/etc/sysctl.conf文件使得系统配置永久生效。

首先执行指令# cp /etc/sysctl.conf /etc/sysctl.conf20230317备份sysctl.conf文件。

然后执行指令# vim /etc/sysctl.conf 在后面加入以下两行。

vm.dirty_background_ratio=5

vm.dirty_ratio=10

最后reboot重启系统生效。

标签: #linux无法写入 #linuxssh超时时间设置 #ssh命令超时设置 #linux 无法登录 #安装完linux无法进入