<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>S3 Data Store Timeout Issue</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=95017703" />
  <subtitle>S3 Data Store Timeout Issue</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=95017703</id>
  <updated>2026-06-24T22:57:10Z</updated>
  <dc:date>2026-06-24T22:57:10Z</dc:date>
  <entry>
    <title>RE: S3 Data Store Timeout Issue</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95590498" />
    <author>
      <name>Andrew Jardine</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95590498</id>
    <updated>2017-09-26T13:16:10Z</updated>
    <published>2017-09-26T13:16:10Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hi Sai,&lt;br&gt;&lt;br&gt;I can see in the configuration class for the S3 store several options around the connection pools / sizes. &lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;	@Meta.AD(
		deflt = "50", description = "http-client-max-connections-help",
		name = "http-client-max-connections", required = false
	)
	public int httpClientMaxConnections();

	@Meta.AD(
		deflt = "5", description = "http-client-max-error-retry-help",
		name = "http-client-max-error-retry", required = false
	)
	public int httpClientMaxErrorRetry();

	@Meta.AD(
		deflt = "7", description = "core-pool-size-help",
		name = "core-pool-size", required = false
	)
	public int corePoolSize();

	@Meta.AD(
		deflt = "20", description = "max-pool-size-help",
		name = "max-pool-size", required = false
	)
	public int maxPoolSize();&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;&lt;br&gt;.. so I would guess that you should be able to see the details in VisualVM. Have you checked?&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Andrew Jardine</dc:creator>
    <dc:date>2017-09-26T13:16:10Z</dc:date>
  </entry>
  <entry>
    <title>RE: S3 Data Store Timeout Issue</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95564376" />
    <author>
      <name>Sai Mohan Gadamsetty</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95564376</id>
    <updated>2017-09-26T06:43:13Z</updated>
    <published>2017-09-26T06:43:13Z</published>
    <summary type="html">Hello Andrew,&lt;br /&gt;&lt;br /&gt;Thanks for your quick reply,&lt;br /&gt;&lt;br /&gt;Yes, we are loading 300 items through html script (document thumbnail link) via wiki Front Page. I did some workaround to load only certain entries to load page properly for all users. &lt;br /&gt;&lt;br /&gt;But I&amp;#39;m looking for monitoring connection pool behavior of Liferay  while communicating with S3 as like database connection pool monitoring (Visual VM), do we have any way to do this? Please advise.</summary>
    <dc:creator>Sai Mohan Gadamsetty</dc:creator>
    <dc:date>2017-09-26T06:43:13Z</dc:date>
  </entry>
  <entry>
    <title>RE: S3 Data Store Timeout Issue</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95026507" />
    <author>
      <name>Andrew Jardine</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95026507</id>
    <updated>2017-09-18T13:32:35Z</updated>
    <published>2017-09-18T13:32:35Z</published>
    <summary type="html">The html code that you are referencing as &amp;#34;on a wiki page&amp;#34; -- is this code that you have written? If it is, then do you really need to grab 300 items for every user that loads the page?</summary>
    <dc:creator>Andrew Jardine</dc:creator>
    <dc:date>2017-09-18T13:32:35Z</dc:date>
  </entry>
  <entry>
    <title>S3 Data Store Timeout Issue</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95017702" />
    <author>
      <name>Sai Mohan Gadamsetty</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=95017702</id>
    <updated>2017-09-18T10:22:19Z</updated>
    <published>2017-09-18T10:22:19Z</published>
    <summary type="html">Hi,&lt;br /&gt;&lt;br /&gt;We are using S3 store as data repository (Liferay 7.0 CE GA3) for our production environment.&lt;br /&gt;&lt;br /&gt;We are having a wiki page to load html content, html will initiate more than 300 requests (document thumbnails) to S3 Bucket to display logos on page. In some scenarios/cases observing &amp;#34;Connection Time out&amp;#34; issue and from that time site performance slows down drastically and loading each page will take minutes of time and console (catalina.out) keep on throw below error logs, &lt;br /&gt;&lt;br /&gt;We are using below configs to connect S3 bucket&lt;br /&gt;* httpClientMaxConnections = 50&lt;br /&gt;* connectionTimeout = 10000&lt;br /&gt;&lt;br /&gt;Right now we have 15 to 20 users (beta users) are visiting to site and performing site activities.&lt;br /&gt;&lt;br /&gt;I want to understand why this error occurring, because of initiating 300 requests causing issue or other? Do we have any monitor/log mechanism (like visual vm) to evaluate how connection pool getting utilized by tomcat/Liferay? What are the best S3 data store configuration/setup for 500 to 1000 users?&lt;br /&gt;&lt;br /&gt;Please help me to solve this issue.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Error Log&lt;/strong&gt;&lt;br /&gt;&lt;blockquote&gt;10:01:31,778 WARN  [http-nio-8443-exec-8][PortalImpl:6647] com.liferay.portal.kernel.exception.SystemException: Unable to execute HTTP request: Timeout waiting for connection from pool&lt;br /&gt;com.liferay.portal.kernel.exception.SystemException: Unable to execute HTTP request: Timeout waiting for connection from pool&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.transform(S3Store.java:709)&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.getS3ObjectSummaries(S3Store.java:603)&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.getHeadVersionLabel(S3Store.java:513)&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.getS3Object(S3Store.java:545)&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.getFileAsStream(S3Store.java:192)&lt;br /&gt;        at com.liferay.document.library.kernel.store.BaseStore.getFileAsStream(BaseStore.java:322)&lt;br /&gt;        at com.liferay.portlet.documentlibrary.store.DLStoreImpl.getFileAsStream(DLStoreImpl.java:290)&lt;br /&gt;        at com.liferay.document.library.kernel.store.DLStoreUtil.getFileAsStream(DLStoreUtil.java:383)&lt;br /&gt;        at com.liferay.document.library.kernel.util.DLPreviewableProcessor.doGetThumbnailAsStream(DLPreviewableProcessor.java:424)&lt;br /&gt;        at com.liferay.portlet.documentlibrary.util.ImageProcessorImpl.getThumbnailAsStream(ImageProcessorImpl.java:124)&lt;br /&gt;        at com.liferay.document.library.kernel.util.ImageProcessorUtil.getThumbnailAsStream(ImageProcessorUtil.java:117)&lt;br /&gt;        at com.liferay.portal.webserver.WebServerServlet.sendFile(WebServerServlet.java:961)&lt;br /&gt;        at com.liferay.portal.webserver.WebServerServlet.service(WebServerServlet.java:276)&lt;br /&gt;        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)&lt;br /&gt;        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:119)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.security.sso.ntlm.internal.servlet.filter.NtlmPostFilter.processFilter(NtlmPostFilter.java:107)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:188)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:188)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:188)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.servlet.filters.uploadservletrequest.UploadServletRequestFilter.processFilter(UploadServletRequestFilter.java:93)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:42)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:268)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:142)&lt;br /&gt;        at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:316)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:188)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)&lt;br /&gt;        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)&lt;br /&gt;        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)&lt;br /&gt;        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)&lt;br /&gt;        at com.liferay.portal.servlet.filters.urlrewrite.UrlRewriteFilter.processFilter(UrlRewriteFilter.java:65)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:207)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:112)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:168)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:168)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:188)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96)&lt;br /&gt;        at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:115)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)&lt;br /&gt;        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)&lt;br /&gt;        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)&lt;br /&gt;        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)&lt;br /&gt;        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)&lt;br /&gt;        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)&lt;br /&gt;        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)&lt;br /&gt;        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)&lt;br /&gt;        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)&lt;br /&gt;        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)&lt;br /&gt;        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)&lt;br /&gt;        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)&lt;br /&gt;        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)&lt;br /&gt;        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)&lt;br /&gt;        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)&lt;br /&gt;        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)&lt;br /&gt;        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)&lt;br /&gt;        at java.lang.Thread.run(Thread.java:745)&lt;br /&gt;Caused by: com.amazonaws.AmazonClientException: Unable to execute HTTP request: Timeout waiting for connection from pool&lt;br /&gt;        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:500)&lt;br /&gt;        at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:310)&lt;br /&gt;        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3608)&lt;br /&gt;        at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3561)&lt;br /&gt;        at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:647)&lt;br /&gt;        at com.liferay.portal.store.s3.S3Store.getS3ObjectSummaries(S3Store.java:582)&lt;br /&gt;        ... 89 more&lt;br /&gt;Caused by: org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool&lt;br /&gt;        at org.apache.http.impl.conn.PoolingClientConnectionManager.leaseConnection(PoolingClientConnectionManager.java:226)&lt;br /&gt;        at org.apache.http.impl.conn.PoolingClientConnectionManager$1.getConnection(PoolingClientConnectionManager.java:195)&lt;br /&gt;        at sun.reflect.GeneratedMethodAccessor1702.invoke(Unknown Source)&lt;br /&gt;        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)&lt;br /&gt;        at java.lang.reflect.Method.invoke(Method.java:497)&lt;br /&gt;        at com.amazonaws.http.conn.ClientConnectionRequestFactory$Handler.invoke(ClientConnectionRequestFactory.java:70)&lt;br /&gt;        at com.amazonaws.http.conn.$Proxy758.getConnection(Unknown Source)&lt;br /&gt;        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:423)&lt;br /&gt;        at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)&lt;br /&gt;        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)&lt;br /&gt;        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)&lt;br /&gt;        at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:728)&lt;br /&gt;        at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:489)&lt;br /&gt;        ... 94 more&lt;/blockquote&gt;</summary>
    <dc:creator>Sai Mohan Gadamsetty</dc:creator>
    <dc:date>2017-09-18T10:22:19Z</dc:date>
  </entry>
</feed>
