I see, thanks.
On Tue, Jan 21, 2014 at 4:17 PM, Xfeep Zhang <easyj...@163.com> wrote: > > On Tuesday, January 21, 2014 6:25:02 AM UTC+8, Sergey Didenko wrote: >> >> Hi Xfeep, >> >> What are the good ways to handle some heavy Clojure calculations when >> using nginx-clojure? >> > > Do you mean every request will cost too much time ? If time cost is > mainly caused by IO blocking, java thread pool can be used to resolve this > problem. > > Otherwise you must add more computers or use more fast hardware to handle > those pure CPU concentrated tasks. > > >> Under nginx model it's bad to block other incoming requests by holding a >> working thread for too long, right? >> > > Yes. Typically the nginx worker processes won't be too many and maybe > the same number of your cpu cores. > If you can not reduce single reponse time, all worker will be blocked by > those slow tasks. > > >> So is it better to route complex job to http-kit? Or to use some kind of >> queue? Or may be to use this nginx-clojure JVM pool that is off by default? >> > > > Suppose your time cost is mainly caused by IO blocking, java thread pool > can be used by two ways : > > (1) use *pcall* , *pvalue* etc. provided by clojure to execute your > tasks parallel to reduce single request-response time. > OR > (2) with nginx-clojure just simply set jvm_workers to some medium number > eg 100, or bigger number if you get more memory. This thread pool will make > nginx workers not blocked until all threads are exhausted. > > When jvm_workers > 0, there's additional cost to one transfer event > flag by pipe. But this cost can be ignored for your slow response and > this cost will be lower than using nginx as a proxy to pass requests to > backend java server. > > In the future release of Nginx-Clojure, synchronized non-blocking IO > APIs will be provided. I think those synchronized non-blocking APIs will > simpilfy to handle some IO blocked tasks. > > By that time jvm_workers maybe no need to be > 0 . > > >> >> On Wed, Jan 15, 2014 at 3:18 PM, Xfeep Zhang <easy...@163.com> wrote: >> >>> >>> >>> On Wednesday, January 15, 2014 12:39:57 PM UTC+8, Roberto De Ioris wrote: >>> >>>> >>>> i strongly suggest you to avoid the "performance" as a selling point, >>>> your >>>> project is cool but not for performance (and you are using a pipe to >>>> transfer requests data from nginx to the jvm so there ipc in place too, >>>> even if you can improve things using OS-specific syscall like splice). >>>> >>> >>> Although I have make it clear in the nginx english mail list, people >>> joined clojure group may still misunderstand. >>> >>> So please forgive me repeating the message here. >>> >>> In the nginx english mail list , I have said : >>> >>> " With the default setting pipe is not used. >>> >>> Pipe is only used for enable jvm thread pool mode only when jvm_workers >>> > 0 (jvm_workers default = 0). >>> >>> Further more pipe is never used to transfer the whole request or >>> response message. >>> >>> When under jvm thread pool mode, pipe is only used to transfer a event >>> flag (only one pointer size)。" >>> >>> >>>> >>>> -- >>>> Roberto De Ioris >>>> http://unbit.it >>>> >>> -- >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@googlegroups.com >>> >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+u...@googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+u...@googlegroups.com. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> >> -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.