<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I got the same error on an AWS instance (m1.xlarge) when using the MapReduce version of list all keys.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas;color:#1E1E1E;background:white;mso-highlight:white'>Query failed with Riak returned an error. Code '0'. Message: {"phase":0,"error":"[preflist_exhausted]","input":"{ok,{r_object,<<\"buyseasons-products\">>,<<\"00113023\">>,[{r_content,{dict,4,16,16,8,80,48,{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},{{[],[],[],[],[],[],[],[],[],[],[[<<\"content-type\">>,97,112,112,108,105,99,97,116,105,111,110,47,106,115,111,110],[<<\"X-Riak-VTag\">>,49,54,99,97,90,90,72,106,56,50,100,77,85,75,66,114,76,50,109,88,89,109]],[[<<\"index\">>,{<<\"active_bin\">>,<<\"InactiveDiscontinued\">>},{<<\"definition_bin\">>,<<\"Costume\">>},{<<\"department_bin\">>,<<\"Adult Costumes\">>},{<<\"...\">>,...}]],...}}},...}],...},...}","type":"forward_preflist","stack":"[]"} – CommunicationError<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas;color:#1E1E1E;background:white;mso-highlight:white'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The ‘Department’ MapReduce with an AWS instance also returned three ‘failed’ phases.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Kevin<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> riak-users [mailto:riak-users-bounces@lists.basho.com] <b>On Behalf Of </b>Jeremiah Peschka<br><b>Sent:</b> Tuesday, February 26, 2013 3:18 PM<br><b>To:</b> riak-users<br><b>Subject:</b> Re: MapReduce performance problem<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal>Responses inline.<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><div><div><p class=MsoNormal><span style='color:#500050'>---</span><o:p></o:p></p><div><p class=MsoNormal><span style='color:#500050'>Jeremiah Peschka - Founder, Brent Ozar Unlimited<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>MCITP: SQL Server 2008, MVP<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#500050'>Cloudera Certified Developer for Apache Hadoop<o:p></o:p></span></p></div></div></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><o:p> </o:p></p><div><p class=MsoNormal>On Tue, Feb 26, 2013 at 12:26 PM, Kevin Burton <<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>> wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Right. I know it is not ideal. I have been able to split the VM’s into groups. So 2 of the 4 are running on separate hardware. Anything more I just get the response ‘get real’. That being said I want to get the maximum performance of the limited resources that I have. I have a separate question for the group in trying to get basho_bench up and running (I get a long string of errors). What do you need to know more about my environment to “understand” it? I am new so I am probably asking the wrong questions so please tell me what you are missing that might help diagnose the problem.</span><o:p></o:p></p></div></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For troubleshooting any environment it's good to know relevant hardware details about CPU speed, core count, amount of RAM, disks, network cards, etc. A working basho_bench benchmark would help, too, because it will provide an indicator of how your environment will perform with Riak as opposed to how your business logic performs, as implemented, with Riak.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>For virtualization, it's also important to know how many other guests are on the host, whether there are any CPU, memory, or network reservations in place, and which version of virtualization you're running. Virtualization makes performance tuning more complex, but not impossible. <o:p></o:p></p></div><div><p class=MsoNormal> <o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I agree. I will use ListAllKeysFromIndex to get a list of keys for now. The only reason that I included the m/r code is because of the error. If I get another m/r job with similar output I need to know how to diagnose the problem. I was using JavaScript m/r because I kind of understand JavaScript. Is there a separate task to do Erlang m/r jobs.</span><o:p></o:p></p></div></blockquote><div><p class=MsoNormal>Erlang phases can be added to a MapReduceQuery using MapErlang and ReduceErlang. <o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>I assume that I will need to know Erlang. Any recommendations on how best to know what I need to know about Erlang to write a m/r job. But before I do that wouldn’t it be prudent to know that the source if the problem is indeed JavaScript? How would I pinpoint that?</span><o:p></o:p></p></div></div></blockquote><div><p class=MsoNormal>I think this has been answered on list. I'd search <a href="http://riak.markmail.org">http://riak.markmail.org</a><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Someone from Basho can probably handle this better than my handwaving that using JavaScript involves an interpreter, type marshaling between Erlang and JavaScript, and won't multi-thread like Erlang will.<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>These two m/r jobs are basically an example of using m/r that would be typical for our application.  Just for sheer maintenance we wouldn’t want to go down the path of maintaining a counter for all the fields that we have. There could be departments, categories, celebrations, . . . Basically a lot of them.  For all intents it is an ad hoc query. If that is one of the limitations then we will have to note it and see if coping with this limitation is too onerous.</span><o:p></o:p></p></div></blockquote><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>MR queries are going to scan all of your data on disk. If you have 5 nodes that can read at ~100 MB/s and you have 100GB of data, how long will it take for your ad hoc query to run? <o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Riak Search/Lucene/Yokozuna will be better options for ad hoc workloads than MapReducing across the cluster.<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> riak-users [mailto:<a href="mailto:riak-users-bounces@lists.basho.com" target="_blank">riak-users-bounces@lists.basho.com</a>] <b>On Behalf Of </b>Jeremiah Peschka<br><b>Sent:</b> Tuesday, February 26, 2013 1:33 PM<br><b>To:</b> riak-users<br><b>Subject:</b> Re: MapReduce performance problem</span><o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Before you go troubleshooting performance problems, I'd focus on getting results out of basho_bench and getting a good understanding of your environment. If you're running 4 guests with 1 vCPU each on the same VM host with all guests sharing a single pool of disks, no amount of tuning will solve that problem. Without an understanding of the operating environment, we can't do much more than point at general best practices and say "these might help you, not sure, though."<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>As far as your specifics - for the first query, if you're attempting to get a list of keys, I still recommend using ListAllKeysFromIndex(string Bucket). This will be pushed out as part of the IRiakClient interface in the next day or two, and I'm sure the gods of OOP won't kill you for using an actual RiakClient object instead of an IRiakClient interface between now and then. Sending those results back directly from riak_kv is going to be far faster than messing around with a JavaScript MapReduce job.<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Always keep in mind that MR jobs are not going to be the most efficient way to perform any kind of ad hoc querying - they're great for large scale data transformations but if you really want performance, you'll want to write Erlang MR jobs. <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>If you need to maintain counts per department, a better approach will be persisting counters and maintaining those counts via some kind of caching/pre-aggregation mechanism, most likely outside of Riak because of eventual consistency guarantees. Alex Siculars will eventually show up and start chanting "use redis"; you'll be resistant at first, but his arguments make a lot of sense. Riak does some things very well, maintaining consistent counters isn't one of them... yet.<o:p></o:p></p></div></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><br clear=all><o:p></o:p></p><div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#500050'>---</span><o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#500050'>Jeremiah Peschka - Founder, Brent Ozar Unlimited</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#500050'>MCITP: SQL Server 2008, MVP</span><o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='color:#500050'>Cloudera Certified Developer for Apache Hadoop</span><o:p></o:p></p></div></div></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'> <o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>On Tue, Feb 26, 2013 at 10:52 AM, Kevin Burton <<a href="mailto:rkevinburton@charter.net" target="_blank">rkevinburton@charter.net</a>> wrote:<o:p></o:p></p><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I have a simple CorrugatedIron client that makes the following request:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:#2B91AF'>IRiakClient</span> riakClient = cluster.CreateClient();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:#2B91AF'>RiakBinIndexRangeInput</span> bucketKeyInput = <span style='color:blue'>new</span> <span style='color:#2B91AF'>RiakBinIndexRangeInput</span>(productBucketName, <span style='color:#A31515'>"$key"</span>, <span style='color:#A31515'>"00000000"</span>, <span style='color:#A31515'>"99999999"</span>);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:#2B91AF'>RiakMapReduceQuery</span> query = <span style='color:blue'>new</span> <span style='color:#2B91AF'>RiakMapReduceQuery</span>()</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                   .Inputs(bucketKeyInput)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                   .MapJs(m => m.Name(<span style='color:#A31515'>"Riak.mapValuesJson"</span>).Keep(<span style='color:blue'>true</span>));</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:#2B91AF'>RiakResult</span><<span style='color:#2B91AF'>RiakMapReduceResult</span>> result = riakClient.MapReduce(query);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'> </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'>So as you can see this is a very basic range m/r query. But the result comes back as:<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas;color:#1E1E1E;background:white'>Riak returned an error. Code '0'. Message: timeout</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.0pt;font-family:Consolas;color:#1E1E1E;background:white'>CommunicationError</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Another type of m/r query I have<o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:#2B91AF'>IRiakClient</span> riakClient = cluster.CreateClient();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                <span style='color:blue'>var</span> query = <span style='color:blue'>new</span> <span style='color:#2B91AF'>RiakMapReduceQuery</span>()</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                    .Inputs(productBucketName)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                    .MapJs(m => m.Source(<span style='color:#A31515'>@"function(v,d,a) {"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"var p = JSON.parse(v.values[0].data);"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"var r = [];"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"d = escape(p.Department);"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"if(d != '') {"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"var o = {};"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"o[d] = 1;"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"r.push(o);"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"}"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"return r;"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"}"</span>))</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                    .ReduceJs(m => m.Source(<span style='color:#A31515'>@"function(v,d,a) {"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"var r = {};"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"for(var i in v) {"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"  for(var w in v[i]) {"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"    if(w in r) r[w] += v[i][w];"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"    else r[w] = v[i][w];"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"  }"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"}"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"return [r];"</span> +</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        <span style='color:#A31515'>"}"</span>)</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;background:white'>                        .Keep(<span style='color:blue'>true</span>));</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>This returns but it takes far too long. I have about 60,000 items in my bucket and this takes about 50-60 seconds to execute. The results seem valid. For these types of m/r jobs what can I do on the server (or client) to helo diagnose the problem.  I have basic tools like iostat and top to give me data but some pointers on using the output of these tools might help.<o:p></o:p></p></div></div><p class=MsoNormal style='mso-margin-top-alt:auto;margin-bottom:12.0pt'><br>_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><o:p></o:p></p></div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <o:p></o:p></p></div></div></div></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></body></html>