> 1. Which API calls pause? If only certain calls pause, then probably you have something > specific to suspect. Try adding a dummy REST call - see if that call pauses > while others do.
I will add a dummy REST call, although this pause does not seem specific to a particular API call. > 2. Is any of your services running on a t1.micro or a burst-oriented EC2 > instance on AWS? Try changing the instance type in that case. We started on a small instance but recently we moved up to a reasonably powered machine with 4 gigs of RAM. > Have you tried printing GC info? No, but I will. Thank you. On Monday, September 15, 2014 12:44:54 AM UTC-4, Shantanu Kumar wrote: > > Few thing to consider: > 1. Which API calls pause? If only certain calls pause, then probably you > have something specific to suspect. Try adding a dummy REST call - see if > that call pauses while others do. > 2. Is any of your services running on a t1.micro or a burst-oriented EC2 > instance on AWS? Try changing the instance type in that case. > 3. Can you mock out the components that you suspect could be a problem? > Begin by mocking out everything you suspect, then replace the mock with > actual impl one component at a time until you isolate the problematic > component. > 4. Have you tried running a profiler? > 5. Have you tried printing GC info? Maybe this could be useful: > http://blog.ragozin.info/2011/09/hotspot-jvm-garbage-collection-options.html > > Shantanu > > On Monday, 15 September 2014 09:45:14 UTC+5:30, larry google groups wrote: >> >> >> I have an embarrassing problem. I convinced my boss that I could use >> Clojure to build a RESTful API. I was successful in so far as that went, >> but now I face the issue that every once in a while, the program pauses, >> for a painfully long time -- sometimes 30 seconds, which causes some >> requests to the API to timeout. We are still in testing, so there is no >> real load on the app, just the frontenders, writing Javascript and making >> Ajax calls to the service. >> >> The service seems like a basic Clojure web app. I use Jetty as the >> webserver, and the libraries in use are: >> >> Ring >> >> Compojure >> >> Liberator >> >> Monger >> >> Timbre >> >> Lamina >> >> Dire >> >> When someone complains about the pauses, I will go test the service, and >> I can hit with 40 requests in 10 seconds and it has great performance. The >> pauses actually seem to come after periods of inactivity, which made me >> think that this had something to do with garbage collection, except that >> the pauses are so extreme -- like I said, sometimes as much as 30 seconds, >> causing requests to timeout. When the app does finally start to respond it >> again, it goes very fast, and responds to those pending request very fast. >> >> But I have to find a way to fix these pauses. >> >> Right now I packaged the app as an Uberjar and put it on the server, spun >> it up on port 24000 and proxied it through Apache. I put a script in >> /etc/init.d to start the app using start-stop-daemon. >> >> Possible things that could be going wrong: >> >> Maybe Jetty needs more threads, or maybe less threads? How would I test >> that? >> >> Maybe the link to MongoDB sometimes dies? (Mongo is on another server at >> Amazon) How would I test that? >> >> Maybe it is garbage collection? How would I test that? >> >> Maybe I have some code that somehow blocks the whole app? Seems unlikely >> but I'm trying to keep an open mind. >> >> Maybe the thread pool managed by Lamina sometimes gets overwhelmed? How >> would I test that? >> >> Maybe when Timbre writes to the log file it causes things to pause? (But >> I believe Timbre does this in its own thread?) How do I test that? >> >> This is a small app: only about 1,100 lines of code. >> >> I don't have much experience debugging problems on the JVM, so I welcome >> any suggestions. >> >> >> >> >> >> >> >> -- 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/d/optout.