Я использую WSO2 API Manger 1.8.0. Я включил проверку авторизации OAuth на основе профиля SAML2BearerAssertion для одного из моих REST API.
Когда я отправляю параллельные запросы API из JMeter. Я вижу эти журналы в консоли. Но ответ получен правильно.
[2015-03-05 05:08:32,497] WARN - APIKeyValidationServiceImpl Invalid session id for thrift authenticator.
[2015-03-05 05:08:32,495] WARN - APIKeyValidationServiceImpl Invalid session id for thrift authenticator.
[2015-03-05 05:08:33,342] WARN - ThriftKeyValidatorClientPool Login failed.. Authenticating again..
[2015-03-05 05:08:33,342] WARN - ThriftKeyValidatorClientPool Login failed.. Authenticating again..
[2015-03-05 05:08:32,493] INFO - CarbonAuthenticationUtil '[email protected] [-1234]' logged in at [2015-03-05 05:08:32,492+0000] from IP address
Когда я увеличиваю параллельную нагрузку дальше. В моем случае 125+ клиентов. Это дает эти исключения. Также не получен ответ.
2015-03-05 05:10:05,795] WARN - SourceHandler Connection time out after request is read: http-incoming-634
[2015-03-05 05:10:06,752] WARN - SourceHandler Connection time out after request is read: http-incoming-625
[2015-03-05 05:10:06,753] WARN - SourceHandler Connection time out after request is read: http-incoming-690
[2015-03-05 05:10:06,796] WARN - SourceHandler Connection time out after request is read: http-incoming-684
[2015-03-05 05:10:06,797] WARN - SourceHandler Connection time out after request is read: http-incoming-648
[2015-03-05 05:10:06,797] WARN - SourceHandler Connection time out after request is read: http-incoming-500
[2015-03-05 05:10:06,797] WARN - SourceHandler Connection time out after request is read: http-incoming-645
[2015-03-05 05:10:08,025] ERROR - ApiMgtDAO Error when executing the SQL
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-41-thread-640] Timeout: Pool empty. Unable to fetch a connection in 60 seconds, none available[size:50; busy:50; idle:0; lastwait:60000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at org.wso2.carbon.apimgt.impl.utils.APIMgtDBUtil.getConnection(APIMgtDBUtil.java:138)
at org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.validateKey(ApiMgtDAO.java:710)
at org.wso2.carbon.apimgt.keymgt.service.APIKeyValidationService.validateKey(APIKeyValidationService.java:148)
at org.wso2.carbon.apimgt.keymgt.service.thrift.APIKeyValidationServiceImpl.validateKey(APIKeyValidationServiceImpl.java:131)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:274)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:262)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-03-05 05:10:08,026] ERROR - ApiMgtDAO Error when executing the SQL
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-41-thread-613] Timeout: Pool empty. Unable to fetch a connection in 60 seconds, none available[size:50; busy:50; idle:0; lastwait:60000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at org.wso2.carbon.apimgt.impl.utils.APIMgtDBUtil.getConnection(APIMgtDBUtil.java:138)
at org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.validateKey(ApiMgtDAO.java:710)
at org.wso2.carbon.apimgt.keymgt.service.APIKeyValidationService.validateKey(APIKeyValidationService.java:148)
at org.wso2.carbon.apimgt.keymgt.service.thrift.APIKeyValidationServiceImpl.validateKey(APIKeyValidationServiceImpl.java:131)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:274)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:262)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-03-05 05:10:08,027] ERROR - APIKeyValidationServiceImpl Error in invoking validate key via thrift..
[2015-03-05 05:10:08,027] ERROR - APIKeyValidationServiceImpl Error in invoking validate key via thrift..
[2015-03-05 05:10:08,043] ERROR - ApiMgtDAO Error when executing the SQL
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-41-thread-628] Timeout: Pool empty. Unable to fetch a connection in 60 seconds, none available[size:50; busy:50; idle:0; lastwait:60000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at org.wso2.carbon.apimgt.impl.utils.APIMgtDBUtil.getConnection(APIMgtDBUtil.java:138)
at org.wso2.carbon.apimgt.impl.dao.ApiMgtDAO.validateKey(ApiMgtDAO.java:710)
at org.wso2.carbon.apimgt.keymgt.service.APIKeyValidationService.validateKey(APIKeyValidationService.java:148)
at org.wso2.carbon.apimgt.keymgt.service.thrift.APIKeyValidationServiceImpl.validateKey(APIKeyValidationServiceImpl.java:131)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:274)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:262)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-03-05 05:10:08,043] ERROR - JDBCPersistenceManager Error when getting a database connection object from the Identity data source.
org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-41-thread-656] Timeout: Pool empty. Unable to fetch a connection in 60 seconds, none available[size:50; busy:50; idle:0; lastwait:60000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at org.wso2.carbon.identity.core.persistence.JDBCPersistenceManager.getDBConnection(JDBCPersistenceManager.java:136)
at org.wso2.carbon.identity.thrift.authentication.dao.ThriftSessionDAO.updateLastAccessTime(ThriftSessionDAO.java:188)
at org.wso2.carbon.identity.thrift.authentication.ThriftAuthenticatorServiceImpl.isAuthenticated(ThriftAuthenticatorServiceImpl.java:186)
at org.wso2.carbon.apimgt.keymgt.service.thrift.APIKeyValidationServiceImpl.validateKey(APIKeyValidationServiceImpl.java:103)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:274)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:262)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-03-05 05:10:08,043] ERROR - APIKeyValidationServiceImpl Error in invoking validate key via thrift..
[2015-03-05 05:10:08,044] ERROR - ThriftSessionDAO Error when getting an Identity Persistence Store instance.
org.wso2.carbon.identity.base.IdentityException: Error when getting a database connection object from the Identity data source.
at org.wso2.carbon.identity.core.persistence.JDBCPersistenceManager.getDBConnection(JDBCPersistenceManager.java:143)
at org.wso2.carbon.identity.thrift.authentication.dao.ThriftSessionDAO.updateLastAccessTime(ThriftSessionDAO.java:188)
at org.wso2.carbon.identity.thrift.authentication.ThriftAuthenticatorServiceImpl.isAuthenticated(ThriftAuthenticatorServiceImpl.java:186)
at org.wso2.carbon.apimgt.keymgt.service.thrift.APIKeyValidationServiceImpl.validateKey(APIKeyValidationServiceImpl.java:103)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:274)
at org.wso2.carbon.apimgt.impl.generated.thrift.APIKeyValidationService$Processor$validateKey.getResult(APIKeyValidationService.java:262)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-41-thread-656] Timeout: Pool empty. Unable to fetch a connection in 60 seconds, none available[size:50; busy:50; idle:0; lastwait:60000].
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:674)
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:188)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:128)
at org.wso2.carbon.identity.core.persistence.JDBCPersistenceManager.getDBConnection(JDBCPersistenceManager.java:136)
... 11 more
Это предел для одного узла APIM? Или можно еще какой-нибудь тюнинг сделать?