bw_mem 内存
最近,我们遇到了一个有趣的生产问题。 一个应用程序在Elastic Load Balancer之后的多个AWS EC2实例上运行。 该应用程序在GNU / Linux OS,Java 8和Tomcat 8应用程序服务器上运行。
突然之间,一个应用程序实例变得无响应。 所有其他应用程序实例都在正确处理流量。 每当从浏览器向该应用程序实例发送HTTP请求时,我们都会在浏览器上打印以下响应。
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.
Reason: Error reading from remote server
我们使用了APM(应用程序性能监视)工具来检查问题。 从APM工具中,我们可以观察到CPU和内存利用率是完美的。 另一方面,从APM工具中,我们可以看到流量并没有进入这个特定的应用程序实例。 真是令人费解。 为什么流量没有进入?
我们登录到该有问题的AWS EC2实例。 我们执行了vmstat , iostat , netstat , top , df命令,以查看是否可以发现任何异常。 令我们惊讶的是,所有这些出色的工具均未报告任何问题。
对于下一步,我们重新启动了运行该应用程序的Tomcat应用程序服务器。 它也没有任何区别。 不过,这个应用程序实例根本没有响应。
DMESG命令
然后,我们在此EC2实例上发出了' dmesg '命令。 此命令显示内核的消息缓冲区。 该命令的输出通常包含设备驱动程序产生的消息。 在此命令生成的输出中,我们注意到以下有趣的消息被重复打印:
[4486500.513856] TCP: out of m