我有个奇怪的问题。每次我停止Tomcat,SSH变得非常缓慢,几乎完全没有反应。SSH接受任何命令需要一分钟甚至更长时间。当我终于让Tomcat重新开始的时候,一切都恢复了正常。
这发生在一个非常繁忙的服务器上。问题是,由于应用程序升级,我需要经常停止Tomcat。它通常需要几秒钟来升级,但在这里,它几乎需要10分钟,因此,我们正经历不必要的停机时间。
我看到的一件事是,当我停止Tomcat时,top在100%的CPU上显示了大量的ksoftirqd/X进程。这会是问题吗?
内核版本是:2.6.18-308.11.1.el5
红帽版本是:Red Hat Enterprise Linux Ser
我发现,当系统耗尽内存时,磁盘IO的使用率将非常高。
似乎许多进程正在疯狂地从硬盘读取(请查看下面的htop输出)。当我杀死一个占用内存过多的进程时,释放一些内存给系统。IO使用减少到正常状态。
这个问题可以通过编写一个消耗大量内存的程序来重现,直到机器上没有足够的内存。当你杀了那个运行程序,一切都恢复正常了。
我知道交换的os机制。但是,交换甚至在整个过程中都没有被使用(查看下面的free和vmstat输出)。
❯ free -h
total used free shared buff/cache available
M
在安装linux的大多数发行版(如果不是全部的话)期间,硬盘驱动器被划分为默认包含一个交换分区。
使用swapon -p priority可以更改此行为。
根据手册页,优先事项是:
PRIORITY
Each swap area has a priority, either high or low. The default priority is
low. Within the low-priority areas, newer areas are even lower priority
than older areas.
All priorities set with swapflags