> 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.

Reply via email to