Hi Travis,
I have done similar things using the Java client but I will assume you
have access to change certain settings at the C client, assuming you
have RW = 2 and N =3, your client is returning to you once 2 writes are
made but an asynchronous write is still pending which will eventually
create lots of back pressure and overload your Riak nodes.
Concurrently speaking don't use more than 8 writer threads for this and
set RW = N (in your case 3) for this tasks so that each write blocks,
that way you won't hit a high back pressure.
Have some sort of blocking queue where you can only put up to (as an
example) 500 tasks, 4 to 8 writer threads consuming from such queue, so
here is a brief description of what I recommend:
* RW = N (in this case 3) so that your write operation blocks and
don't leave asynchronous tasks pending for the Riak cluster.
* Don't exceed say, 8 writers (I have been there, more threads won't
really help, sometimes 4 will just write faster than 8)
* Have a bounded blocking queue (example max size = 500) where you
schedule your tasks which the writer threads consume from.
Try that and see if that helps, I'm quite certain that at using such
mechanism it will be consistent and your Riak nodes should never crash.
Best regards,
Guido.
On 06/09/16 16:42, Travis Kirstine wrote:
Thank Alexander, we’re using HAproxy
*From:*Alexander Sicular [mailto:sicul...@basho.com]
*Sent:* September-06-16 11:09 AM
*To:* Travis Kirstine <tkirst...@firstbasesolutions.com>
*Cc:* Magnus Kessler <mkess...@basho.com>; riak-users@lists.basho.com
*Subject:* Re: speeding up bulk loading
Hi Travis,
I also want to confirm that you are spreading your load amongst all
nodes in the cluster. You should be connecting your C client to Riak
via a proxy like nginx/HAproxy/F5 [0]. The proxy will do a round
robin/least connections distribution to all nodes in the cluster. This
will greatly increase performance if you are not already doing it.
-alexander
[0] http://docs.basho.com/riak/kv/2.1.4/configuring/load-balancing-proxy/
Alexander Sicular
Solutions Architect
Basho Technologies
9175130679
@siculars
On Wed, Aug 31, 2016 at 10:41 AM, Travis Kirstine
<tkirst...@firstbasesolutions.com
<mailto:tkirst...@firstbasesolutions.com>> wrote:
Magnus
Thanks for your reply. We’re are using the riack C client library
for riak (https://github.com/trifork/riack) which is used within
an application called MapCache to store 256x256 px images with a
corresponding key within riak. Currently we have 75 million
images to transfer from disk into riak which is being done
concurrently. Periodically this transfer process will crash
Riak is setup using n=3 on 5 nodes with a leveldb backend. Each
server has 45GB of memory and 16 cores with standard hard
drives. We made no significant modification to the riak.conf
except upping the leveldb.maximum_memory.percent to 70 and
tweeking the sysctl.conf as follows
vm.swappiness = 0
net.ipv4.tcp_max_syn_backlog = 40000
net.core.somaxconn = 40000
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_moderate_rcvbuf = 1
# Increase the open file limit
# fs.file-max = 65536 # current setting
I have seen this error in the logs
2016-08-30 22:26:07.180 [error] <0.20777.512> CRASH REPORT Process
<0.20777.512> with 0 neighbours crashed with reason: no function
clause matching
webmachine_request:peer_from_peername({error,enotconn},
{webmachine_request,{wm_reqstate,#Port<0.2817336>,[],undefined,undefined,undefined,{wm_reqdata,'GET',...},...}})
line 150
Regards
*From:*Magnus Kessler [mailto:mkess...@basho.com
<mailto:mkess...@basho.com>]
*Sent:* August-31-16 4:08 AM
*To:* Travis Kirstine <tkirst...@firstbasesolutions.com
<mailto:tkirst...@firstbasesolutions.com>>
*Cc:* riak-users@lists.basho.com <mailto:riak-users@lists.basho.com>
*Subject:* Re: speeding up bulk loading
On 26 August 2016 at 22:20, Travis Kirstine
<tkirst...@firstbasesolutions.com
<mailto:tkirst...@firstbasesolutions.com>> wrote:
Is there any way to speed up bulk loading? I wondering if I
should be tweeking the erlang, aae or other config options?
Hi Travis,
Excuse the late reply; your message had been stuck in the
moderation queue. Please consider subscribing to this list.
Without knowing more about how you perform bulk uploads, it's
difficult to recommend any changes. Are you using the HTTP REST
API or one of the client libraries, which use protocol buffers by
default? What concerns do you have about the upload performance?
Please let us know a bit more about your setup.
Kind Regards,
Magnus
--
Magnus Kessler
Client Services Engineer
Basho Technologies Limited
Registered Office - 8 Lincoln’s Inn Fields London WC2A 3BP Reg
07970431
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com <mailto:riak-users@lists.basho.com>
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com