I did find this:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSPerformance.html

"Your performance can also be impacted if your application isn’t sending 
enough I/O requests. This can be monitored by looking at your volume’s 
queue length and I/O size. The queue length is the number of pending I/O 
requests from your application to your volume. For maximum consistency, 
HDD-backed volumes must maintain a queue length (rounded to the nearest 
whole number) of 4 or more when performing 1 MiB sequential I/O. "

So, at least for now, I'll assume I'm dealing with some weird kind of AWS 
thing. But if anyone has seen this pattern (slow until you get a Socket 
timeout, then fast) because of something you did in your Clojure code, I 
would love to hear about it. 




On Thursday, October 5, 2017 at 2:31:10 PM UTC-4, lawrence...@gmail.com 
wrote:
>
> Konstantinov, yes, perhaps, though I can't think where. This is a small 
> app, about 950 lines of code. There is a limited number of places where I 
> can make such a mistake. I do aggregate a lot of data into an atom, and I'm 
> sure there is a lot of contention around the atom, but the Socket timeout 
> errors are surely some weird AWS or ElasticSearch thing. 
>
>
>
> On Thursday, October 5, 2017 at 2:12:42 PM UTC-4, Lubomir Konstantinov 
> wrote:
>>
>> Holding to a head somewhere perhaps?
>>
>> On Thursday, 5 October 2017 19:32:11 UTC+3, lawrence...@gmail.com wrote:
>>>
>>> One last thing, I should mention, if I go through and add " LIMIT 100 " 
>>> to all the SQL queries, everything works great. That is, when dealing with 
>>> a few hundred documents, the app seems to work perfectly, and there are no 
>>> errors. It's only when I try to work with a few million documents that 
>>> things fall apart. I suspect some kind of contention arises... somewhere. 
>>> Possibly in several locations. But I'm not yet sure what the problem is. 
>>>
>>>
>>>
>>> On Wednesday, October 4, 2017 at 12:49:12 AM UTC-4, 
>>> lawrence...@gmail.com wrote:
>>>>
>>>> This is probably a stupid question, but is there an obvious way to get 
>>>> an error message out of Elastisch? I had an app that was working with 
>>>> MongoDB and I was then told I had to use ElasticSearch instead (something 
>>>> about only using AWS for everything) so now I'm trying to get an error 
>>>> message, because my code doesn't seem to work. I read through here without 
>>>> seeing anything obvious: 
>>>>
>>>> http://clojureelasticsearch.info/articles/getting_started.htm
>>>>
>>>> I rewrote my MongoDB function, so it should work with Elastisch: 
>>>>
>>>> (defn push-item-to-persistence
>>>>   [item db]
>>>>   (let [
>>>>         denormalized-id (get-in item [:denormalized-id] :no-id)
>>>>         item (assoc item :updated-at 
>>>> (temporal/current-time-as-datetime))
>>>>         item (assoc item :permanent-holding-id-for-item-instances 
>>>> (java.util.UUID/randomUUID))
>>>>         item (assoc item :instance-id-for-this-one-item 
>>>> (java.util.UUID/randomUUID))
>>>>         item (assoc item :item-type :deduplication)
>>>>         ]
>>>>     (if (= denormalized-id :no-id)
>>>>       (slingshot/throw+ {
>>>>                          :type 
>>>> ::no-denormalized-id-in-push-item-into-database
>>>>                          :item item
>>>>                          })
>>>>       (slingshot/try+
>>>>        (put conn index mapping-type id document)
>>>>        (esd/put db "facts-over-time" "deduplicaton" (str 
>>>> denormalized-id) item)
>>>>        (println " done with put in push-item-to-persistence ")
>>>>        (catch Object o
>>>>          (slingshot/throw+ {
>>>>                             :type ::push-item-to-persistence
>>>>                             :error o
>>>>                             :item item
>>>>                             :db db
>>>>                             }
>>>>                            ))))))
>>>>
>>>>
>>>> It doesn't seem that any documents are getting into ElasticSearch. I 
>>>> was hoping to the (throw) would reveal to me some useful debugging 
>>>> information, but that doesn't seem to happen. 
>>>>
>>>> The connection appears to be valid, as I can do this:
>>>>
>>>>                  (let [conn (persistence/multi-thread-start config)
>>>>                        res  (esd/search conn "facts-over-time" 
>>>> "deduplication" :query {:match_all {}})
>>>>                        n    (esrsp/total-hits res)
>>>>                        hits (esrsp/hits-from res)]
>>>>                    (clojure.pprint/pprint res))
>>>>
>>>> and I get: 
>>>>
>>>> {:took 1,
>>>>  :timed_out false,
>>>>  :_shards {:total 5, :successful 5, :failed 0},
>>>>  :hits {:total 0, :max_score nil, :hits []}}
>>>>
>>>> So the connection is there. But no records are. 
>>>>
>>>>
>>>>

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