.net - WCF Throttling and Connection Limits -
i have browsed internet , stack overflow answers can't seem clear answer issues.
i have around 50 clients spread out across country regularly open wcf wshttpbinding call automatically through windows service server every 10-20 mins. works because limit # of clients can connect , perform long running operations through server , client knows cannot , tries next time checks in.
this has been working until yesterday when 1 client has 7 separate systems behind same router started having very slow internet issues. 7 systems open connection server every 10-20 mins, , perform "check-in" procedures. calls take while , each system may connected service @ once using 7 connections server. other 43 systems need "check-in" every 10-20 minutes. since client 7 systems having slow internet, calls long running processes on serice taking longer normal , timing out on client (i got stale security timestamp errors sometimes). in return hang wcf service responding other client requests , client timeout , server connections clean , process other requests.
i need service unaffected client internet issues , service needs keep chugging along servicing other clients continue "check-in".
now, i've implemented service throttling behavior on service end already:
dim stb new servicethrottlingbehavior stb.maxconcurrentsessions = 100 stb.maxconcurrentcalls = 20 stb.maxconcurrentinstances = 120 servicehost.description.behaviors.add(stb)
i've done reading out there , found setting, not have in code of now:
system.net.servicepointmanager.defaultconnectionlimit
which i've tried understand don't entirely. so, explanation, here questions:
- do set system.net.servicepointmanager.defaultconnectionlimit @ service or client end?
- where set that? before open servicehost? before create servicehost?
- are there other areas change connection limits , concurrent calls wcf? (it seems reading there can few, depending on binding you're using)
note: if post answers, please use code, not use config file bindings, create binding programmatically.
thank you.
i don't understand service doing 'slow internet' should affect it. sending massive amounts of data , forth every check-in? without more detail on design it's hard going on.
that said, think should @ design again. if server doing long running operation before can respond client, client shouldn't hang around , wait on http 10 minutes @ time. make more sense send request, either check see if done (and not required hold connection) or use net.tcp binding , use that's more suited holding such lengthy connections (net.tcp use callback notify client when call done).
Comments
Post a Comment