机器(linux)运行三台等待TCP连接的服务器,用JAVA编写。稳定运行两周左右后,系统负载突然最高涨至30.05、12.93、9.70(两周正常运行期间,经常是0.0、0.0、0.0),且大幅波动。
我登录后检查状态监测,没发现什么特别的,只是内存占用有点异常的高。
所以我重新启动了三个 Java 服务器,一切又恢复正常了。
如果我再次遇到此问题,是否有任何工具或方法可以找出导致此问题的具体原因?
答案1
Java,两周后内存使用率很高……有内存泄漏的迹象,并导致交换(I/O 绑定,这可以很容易地解释负载)。如果如您所说,vmstat 看起来正常(您检查了 si / so?),则可能是 Java 进程与客户端或彼此之间其他形式的通信不再得到足够快速的处理。