【问题标题】:502 Proxy Error when accessing Elastic Beanstalk endpoint访问 Elastic Beanstalk 端点时出现 502 代理错误
【发布时间】: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


【解决方案1】:

这里的问题是我最初选择的实例不足以处理我的请求。我从 t1.micro(我认为)切换到 m1.small。这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-30
    • 2018-10-12
    • 2015-04-27
    • 2022-07-01
    • 2019-04-03
    • 2019-07-03
    • 2017-06-05
    • 2019-07-07
    相关资源
    最近更新 更多