On Wednesday, March 26, 2014 1:28:13 AM UTC+5:30, Saúl Ibarra Corretgé 
wrote:
>
> -----BEGIN PGP SIGNED MESSAGE----- 
> Hash: SHA1 
>
>
> >> To process incoming requests I fire few DB queries and finally I 
> >> send back response from 'after_thread' callback. Since its time 
> >> consuming operation I've I threaded it off. (For some requests, I 
> >> also call uv_async_send through thread to send some intermittent 
> >> updates to requester client) 
> > 
> >> If not uv_queue_work what are better options for me, please? 
> > 
>
> What OS are you in? If you are on Unix you can export the 
> UV_THREADPOOL_SIZE environment variable to the number of threads you 
> want (it's capped at 128). 
>
> Give it a shot and let us know if you see any difference. 
>
> - -- 
> Saúl Ibarra Corretgé 
> bettercallsaghul.com 
>
> -----BEGIN PGP SIGNATURE----- 
> Version: GnuPG v1 
> Comment: Using GnuPG with Icedove - http://www.enigmail.net/ 
>
> iQIcBAEBAgAGBQJTMd/VAAoJEEEOVVOum8BZQTMP/1PYUdu6AIEz2pigUn559Ls1 
> aB8iS2RoxhvfWBTeabp1uoaGYF1iitCz7rPsMexvlaCXqThNy+9LdwGBCdcg/w7I 
> OnPfZkwn7IRaQf2CoOSdrrBs2vtWLEO9H7jKxM9MzVryNSsjDkCdnVffwObeKNKc 
> fHooa8mMPBie+jsmN8dtbXXCI53Lb/pP28lgX257Y4bq0agtRzVgrwMJ9mHbzmBM 
> Ctzjk8oxGgBSBA7Yq4cr1djixAScUPUemxpIb1u4qJbP+mM/RfukdVFYsVV4ITa2 
> PY49dw4TphGJSNi3/pnk4kh2Nr3lOPMmhLv0ezkz3ISePiqR5RsXBzxOvEczzLbI 
> VJaA71YPqCn4gHJ03lwyAiz+641m2WHWrTX0qtANGvXQdpMQFeHd4c910AKa6mKf 
> l1RFhcepX6Zs9RG0zUJ2ZtEmKVHs3Gy9ooFM1gTuKLXLck/7m/5i2h86BT3Ea8hc 
> GAPF1JjDCqu/ENSe2IXWUB3IgtF0oq3kbHMauRIjmfsWKe9IP86mV4sF9RqKqqzS 
> Hn0a2jqLVh0xLTG04xPRjnQXtzDyc3GKNFlWp1+hxTd6fRIOBPzSEk6Wz0WGwlvx 
> P6X70WmZDGB6VvlTMezz/0SAbkUP8T4fZTIqQaiYi9Ym6/QA309AJ6MAG0RZgXP/ 
> 8kBkiNrRAGscriAIwBrE 
> =idMh 
> -----END PGP SIGNATURE----- 
>


I am on Windows. But it is not about number of threads really. I've 
confirmed it and found despite of completion of threads successfully libuv 
doesn't call 'after_thread' and any other callbacks when there are loads of 
read requests.

Well, let me try to put it in simple example which doesn't involve any 
threads:
Let’s say I am calling 'uv_write' from event loop itself ('on_read') and 
just echoing back requests to the client.
Now, when there is continuous load of incoming requests, libuv would never 
calls 'after_write'. It will call 'after_write' only when incoming requests 
are stopped (or paused even for microseconds).

This could be correct as per event based design. Because for each of 
incoming request libuv keeps calling 'on_read'. And since there are 
non-stop load of incoming requests, it never find time to call 
'after_write' and other callbacks.
But DoS attackers could exploit this to bring down the server.

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to