<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Adrian, Elias,<div><br></div><div>I think I read somewhere on the list that the blobstore version of jclouds upgrade has been postponed to the next version of Infinispan (4.1?).</div><div>Do you see any added value, to the S3 cache store, in upgrading ASAP ?</div><div><br></div><div>I'll catch you later on #jclouds to send you the 'asynchronous' modifications (but we are on a different TZ).</div><div><br></div><div>Elias knows about a previous (jboss cache?) asynch version of the cache store interface but I don't see any trace of it in the Infinispan release (was the jboss cache already using Futures ?).</div><div>And you are right Elias, HTTP performance problems are, in part, solved with concurrency, connection pools and the like, usually managed by the http client itself (like httpnio).</div><div><br></div><div>Regarding the S3 'bucket' full of cache store 'buckets', there is indeed a naming problem.</div><div><br></div><div>But I am quite sure this one returns all the content of the cache :</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>public Set&lt;Bucket&gt; values() throws S3ConnectionException {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>Set&lt;Bucket&gt; buckets = new HashSet&lt;Bucket&gt;();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>for (Map.Entry&lt;String, InputStream&gt; entry : map.entrySet()) {</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                        </span>buckets.add(bucketFromStream(entry.getKey(), entry.getValue()));</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">                </span>return buckets;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#DBCABA"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#DBCABA"><span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; ">And values() is called by loadAllLockSafe() itself called by performRehash() itself called when a cache leaves a distributed cluster.</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">But when you take a closer look at the way the results are used... there are a lot of optimizations to be done!</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">One solution, in performRehash, is only to iterate on keys and fetch the value later...</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">Anyway, I hope this kind of fine tuning will appear in the 4.1 version ;-)</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">Cheers,</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">philippe</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; color: rgb(226, 227, 213); "><font class="Apple-style-span" color="#000000" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></div></div><div><br></div><div><div><div>Le 2 déc. 2009 à 19:35, Adrian Cole a écrit :</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi, Phillipe.<br><br>Firstly, &nbsp;thanks for taking effort on this. &nbsp;If you have some time, I<br>would love for you to integrate the trunk version of jclouds as we<br>have significantly better logging. &nbsp;I'd also love to see your patch on<br>current effort. &nbsp;Seems you know what you are doing :)<br><br>Second, there is an unfortunate overloading of the term bucket.<br>Bucket exists as an infinispan concept, which means all objects that<br>share the same hashcode. &nbsp;That said, I believe it is the loadOnStartup<br>option that uses the values() thing, and not for general purpose<br>join/leave.<br><br>Third, this was indeed done with the synch cache store api. &nbsp;I'm not<br>sure is an async one is present, &nbsp;but you can see we can easily<br>integrate with such.<br><br>I'd be glad to chat more on #jclouds on freenode, if you have some time.<br><br>Cheers and excellent work.<br>-Adrian<br><br>On Wed, Dec 2, 2009 at 10:00 AM, philippe van dyck &lt;<a href="mailto:pvdyck@gmail.com">pvdyck@gmail.com</a>&gt; wrote:<br><blockquote type="cite">Hi Adrian and thanks for your answer.<br></blockquote><blockquote type="cite">I dug into the source of Infinispan S3 cache store and, no offense, but it<br></blockquote><blockquote type="cite">looks more like a proof of concept than something I could use in production.<br></blockquote><blockquote type="cite">First of all, in order to achieve a minimum of efficiency, we need to use<br></blockquote><blockquote type="cite">concurrency in this specific cache store.<br></blockquote><blockquote type="cite">Since it is using the JCloud's Map interface &nbsp;and not the Future&lt;&gt;<br></blockquote><blockquote type="cite">asynchronous one... well, you know that, you wrote a big part of JClouds ;-)<br></blockquote><blockquote type="cite">The CacheStore interface does not offer an asynchronous solution, but a<br></blockquote><blockquote type="cite">workaround is available.<br></blockquote><blockquote type="cite">I just modified the S3 cache store, and every write operation is now<br></blockquote><blockquote type="cite">asynchronous and the resulting future is stored in a ThreadLocal queue.<br></blockquote><blockquote type="cite">After each transaction (S3CacheStore.applyModifications) I empty the queue<br></blockquote><blockquote type="cite">and wait for each Future to finish, in order to catch errors (and allow<br></blockquote><blockquote type="cite">rollbacks... or else the whole transaction mechanism is useless).<br></blockquote><blockquote type="cite">The drawback is obvious, if you don't use a transaction manager to update<br></blockquote><blockquote type="cite">the cache, exceptions will die silently (but come on, nobody does that ;-).<br></blockquote><blockquote type="cite">The solution is working and I updated 1000 entries in ... 20 seconds (for me<br></blockquote><blockquote type="cite">it means 'mission accomplished').<br></blockquote><blockquote type="cite">Secondly, there are still a couple of very strange things happening in the<br></blockquote><blockquote type="cite">S3 cache store, but the most intriguing one is<br></blockquote><blockquote type="cite">definitely&nbsp;JCloudsBucket&nbsp;&nbsp;public Set&lt;Bucket&gt; values().<br></blockquote><blockquote type="cite">Is it really serious ? Must we be able to load *ALL* of our data in order to<br></blockquote><blockquote type="cite">rehash on some cluster join/leave operation ?<br></blockquote><blockquote type="cite">I plan to store a couple of 10's of GB on S3 so... well you see the problem.<br></blockquote><blockquote type="cite">It seems especially problematic since I was planning to use Amazon's EC2<br></blockquote><blockquote type="cite">autoscale feature to add Infinispan instances to my 'previously' working<br></blockquote><blockquote type="cite">cluster.<br></blockquote><blockquote type="cite">I am quite sure I misunderstood something, or maybe all the rest.<br></blockquote><blockquote type="cite">Any help most welcome.<br></blockquote><blockquote type="cite">Philippe<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Le 2 déc. 2009 à 18:19, Adrian Cole a écrit :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hi, phillipe.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Apologies about the differences in trunk not being in infinispan, yet.<br></blockquote><blockquote type="cite">Obviously that version would help narrow down what's going on.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">when you mentioned this: "it is abysmal (when using httpclient<br></blockquote><blockquote type="cite">directly I had a min of 100/sec using 20 connections)."<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Are you saying you are comparing to code that is writing to S3 via<br></blockquote><blockquote type="cite">httpclient apis?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">S3 tends to have a 80ms minimum overhead on PUT commands as measured<br></blockquote><blockquote type="cite">by <a href="http://hostedftp.com">hostedftp.com</a> &nbsp;[1]<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Our normal perf tests from trunk do about 100 concurrent puts in 2-3<br></blockquote><blockquote type="cite">seconds untuned to s3 without the use of nio.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Cheers,<br></blockquote><blockquote type="cite">-Adrian<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">[1]<br></blockquote><blockquote type="cite"><a href="http://hostedftp.wordpress.com/2009/06/30/hostedftp-amazon-aws-s3-performance-report-how-fast-is-the-cloud/">http://hostedftp.wordpress.com/2009/06/30/hostedftp-amazon-aws-s3-performance-report-how-fast-is-the-cloud/</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Wed, Dec 2, 2009 at 6:06 AM, Bela Ban &lt;<a href="mailto:bban@redhat.com">bban@redhat.com</a>&gt; wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">OK, then someone from the Infinispan team needs to help you.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">If the option to use write-behind (instead of write-through) for a cache<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">loader still exists, that might be a perf boost.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The basic issue with the S3 cache loader is that it needs to send slow<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">and bulky SOAP messages to S3, and that's always slow. I don't know the<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">current S3 cache loader impl, but I suggest take a look and see what<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">properties they support. E.g. they might have an option to batch updates<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">and write them to S3 in collected form.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">philippe van dyck wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Thanks for your help Bela.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Indeed, when I replace the S3 cache store with the disk one, the performance<br></blockquote><blockquote type="cite">problem disappears (takes less than a second to store my 100 'put' updates<br></blockquote><blockquote type="cite">when I commit the transaction).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Here is my config :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&lt;infinispan xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; xmlns="urn:infinispan:config:4.0"&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &lt;global&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;transport<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport"&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;properties&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="configurationFile"<br></blockquote><blockquote type="cite">value="jgroups.xml" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/properties&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/transport&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &lt;/global&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &lt;default&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;transaction<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">transactionManagerLookupClass="org.infinispan.transaction.lookup.DummyTransactionManagerLookup"<br></blockquote><blockquote type="cite">/&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;clustering mode="distribution"&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;l1 enabled="true" lifespan="100000" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;hash numOwners="2" rehashRpcTimeout="120000" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/clustering&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;loaders passivation="false" shared="true" preload="false"&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;loader class="org.infinispan.loaders.s3.S3CacheStore"<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fetchPersistentState="false"<br></blockquote><blockquote type="cite">ignoreModifications="false"<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; purgeOnStartup="false"&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;properties&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="awsAccessKey"<br></blockquote><blockquote type="cite">value="xxx" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="awsSecretKey"<br></blockquote><blockquote type="cite">value="xxx" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="bucketPrefix"<br></blockquote><blockquote type="cite">value="store" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/properties&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;async enabled="true"/&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/loader&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/loaders&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;unsafe unreliableReturnValues="true" /&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&nbsp; &nbsp; &nbsp; &lt;/default&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">&lt;/infinispan&gt;<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">And the log :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:37): JGroupsTransport &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - Starting JGroups Channel<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:38): JChannel &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - JGroups version: 2.8.0.CR5<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">GMS: address=sakapuss.local-16157, cluster=Infinispan-Cluster, physical<br></blockquote><blockquote type="cite">address=192.168.1.136:7800<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:49): JGroupsTransport &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - Received new cluster view:<br></blockquote><blockquote type="cite">[sakapuss.local-16157|0] [sakapuss.local-16157]<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:49): JGroupsTransport &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - Cache local address is<br></blockquote><blockquote type="cite">sakapuss.local-16157, physical address is 192.168.1.136:7800<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:49): GlobalComponentRegistry &nbsp; &nbsp;- Infinispan version:<br></blockquote><blockquote type="cite">Infinispan 'Starobrno' 4.0.0.CR2<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:49): AsyncStore &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - Async cache loader starting<br></blockquote><blockquote type="cite">org.infinispan.loaders.decorators.AsyncStore@7254d7ac<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">WARN &nbsp;(14:54:51): utureCommandConnectionPool -<br></blockquote><blockquote type="cite">org.jclouds.http.httpnio.pool.HttpNioFutureCommandConnectionPool@fcd4eca1 -<br></blockquote><blockquote type="cite">saturated connection pool<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">INFO &nbsp;(14:54:52): ComponentRegistry &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- Infinispan version:<br></blockquote><blockquote type="cite">Infinispan 'Starobrno' 4.0.0.CR2<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">please note the HttpNioFutureCommandConnectionPool@fcd4eca1 - saturated<br></blockquote><blockquote type="cite">connection pool &nbsp;(??)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Philippe<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Le 2 déc. 2009 à 14:28, Bela Ban a écrit :<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Just to narrow down the issue: when you disable the S3 cache store, I<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">assume the performance problem goes away, correct ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Just trying to pin the blame on the S3 cache loader, then I don't even<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">need to see whether it is a JGroups problem... :-)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">philippe van dyck wrote:<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Hi Infinispan mailing list,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">a couple of days ago, I succeeded in writing an entity store for qi4j<br></blockquote><blockquote type="cite">(<a href="http://www.qi4j.org/">http://www.qi4j.org/</a>) using Infinispan, the S3 store and the S3_PING<br></blockquote><blockquote type="cite">JGroups clustering configuration.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">It works like a charm, discovers new EC2 instances, synchronizes and process<br></blockquote><blockquote type="cite">transactions perfectly... you did an amazing job.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">But I have a serious performance problems.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">When I write an update (&lt;1k) to the cache, it takes around 500 ms to be<br></blockquote><blockquote type="cite">stored on S3.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">The best result I achieved was around 10 cache writes per second... it is<br></blockquote><blockquote type="cite">abysmal (when using httpclient directly I had a min of 100/sec using 20<br></blockquote><blockquote type="cite">connections).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">When I commit a JTA transaction made of 100 cache writes, it takes around 30<br></blockquote><blockquote type="cite">seconds (cpu&lt;5%) and the first write ends on S3 after at least 5 seconds of<br></blockquote><blockquote type="cite">'idle' time (SSL negotiation??).<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I disabled the store asynchronism and work without JTA transactions, no<br></blockquote><blockquote type="cite">effect on performance.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I also modified the jClouds configuration, multiplying by 10 all worker<br></blockquote><blockquote type="cite">threads, connections and the rest... no improvement!<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">When I (load) test my web app (wicket based+qi4j+...infinispan) the cpu<br></blockquote><blockquote type="cite">stays idle (&lt;5%) and ... JTA transactions fails (timeouts) and I cannot<br></blockquote><blockquote type="cite">acquire locks before the 10 seconds timeout.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Is there something fishy in the jclouds configuration ? in the httpnio use<br></blockquote><blockquote type="cite">of jclouds ? in the version of jclouds (the trunk one with the blob store<br></blockquote><blockquote type="cite">seems to be so different) ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Am I missing something ?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Any pointer to any doc/help/experience is welcome ;-)<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Philippe<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Bela Ban<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Lead JGroups / Clustering Team<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">JBoss<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">------------------------------------------------------------------------<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">--<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Bela Ban<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Lead JGroups / Clustering Team<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">JBoss<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">_______________________________________________<br></blockquote><blockquote type="cite">infinispan-dev mailing list<br></blockquote><blockquote type="cite"><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br></blockquote><blockquote type="cite"><a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br></blockquote><blockquote type="cite"><br></blockquote><br>_______________________________________________<br>infinispan-dev mailing list<br><a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/infinispan-dev<br></div></blockquote></div><br></div></body></html>