【发布时间】:2018-09-18 12:07:35
【问题描述】:
我在 Elastic Beanstalk 上运行我的 Java Web 应用程序时遇到问题。
它使用我在 Aurora mySQL 服务上运行的 mySQL 数据库,当我的应用在我的 Mac 上本地运行时,我已经能够连接并使用它。
我还创建了一个 Elastic Beanstalk 服务并将 WAR 文件部署到它,但是当我尝试访问它生成的端点时,我收到以下 502 错误:
代理错误
代理服务器收到来自上游服务器的无效响应。 代理服务器无法处理请求 GET /。
原因:从远程服务器读取错误
它似乎在 60 秒后超时。
我尝试在.ebextensions/httpd/conf/httpd.conf 中设置更长的 Timeout 和 KeepAliveTimeout 值,但这只会导致端点在抛出 502 之前挂起更长的时间。
我已经下载了 EB 日志,让我印象深刻的一件事是来自 catalina.out 的这段摘录:
托管线程:3 活动线程:3 活动任务: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@5818f545 在线程上:C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#2 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@3356cf8f 在线程上:C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#0 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@789ae24e 在线程上:C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#1 待处理任务: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@32776cec 池线程堆栈跟踪: 线程[C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#2,5,main] java.net.PlainSocketImpl.socketConnect(本机方法) java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) java.net.Socket.connect(Socket.java:589) com.mysql.cj.core.io.StandardSocketFactory.connect(StandardSocketFactory.java:202) com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:57) com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:122) com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:1619) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1601) com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:633) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) 线程[C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#0,5,main] java.net.PlainSocketImpl.socketConnect(本机方法) java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) java.net.Socket.connect(Socket.java:589) com.mysql.cj.core.io.StandardSocketFactory.connect(StandardSocketFactory.java:202) com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:57) com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:122) com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:1619) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1601) com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:633) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) 线程[C3P0PooledConnectionPoolManager[identityToken->1br9sm89u1au3ktt1ubpi4i|3c8f06c7]-HelperThread-#1,5,main] java.net.PlainSocketImpl.socketConnect(本机方法) java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) java.net.Socket.connect(Socket.java:589) com.mysql.cj.core.io.StandardSocketFactory.connect(StandardSocketFactory.java:202) com.mysql.cj.mysqla.io.MysqlaSocketConnection.connect(MysqlaSocketConnection.java:57) com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:122) com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:1619) com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1601) com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:633) com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347) com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219) com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
有谁知道如何解决这个问题,甚至我应该如何调查它?我对 AWS 完全陌生,并且正在苦苦挣扎。
【问题讨论】:
-
您是否在使用某种代理?无论如何,您是否已将 EC2 实例配置为接受所有通过 TCP/IP 传入的流量?不管你信不信,我对 AWS 的体验是它很容易配置。您很可能有一个小的配置问题。
标签: java amazon-web-services tomcat amazon-elastic-beanstalk