I do not know much about the JVM. I never worked with Java, though I am now
working with Clojure. I am getting this error:
clojure.lang.ExceptionInfo: OOM command not allowed when used memory >
'maxmemory'. {:prefix :oom} stack trace: {:class
clojure.lang.ExceptionInfo, :message \"OOM command not allowed when used
memory > 'maxmemory'.\
We have a server that has 20 gigs of physical RAM, though the app itself
has these memory limits:
:jvm-opts ["-Xms300m" "-Xmx2000m" "-XX:-UseCompressedOops"]
I saw that Sean Corfield posted this code to track memory use, so I have
been using this to keep track of my app's memory usage:
(defn- memory-bean
"Return the MemoryMXBean."
[]
(java.lang.management.ManagementFactory/getMemoryMXBean))
(defn- heap-usage
"Given a MemoryMXBean, return the heap memory usage."
[^java.lang.management.MemoryMXBean bean]
(.getHeapMemoryUsage bean))
(defn- heap-used-max
"Given heap memory usage, return a pair of used/max values."
[^java.lang.management.MemoryUsage usage]
[(.getUsed usage) (.getMax usage)])
(defn memory-usage
"Return percentage, used, max heap as strings."
[]
(let [used-max (-> (memory-bean) (heap-usage) (heap-used-max))]
(cons (as-percentage used-max)
(as-megabytes used-max))))
Right now I have this run every 60 seconds, so I can keep track of what is
happening in my app. In my logs, a few seconds after I get the OOM error, I
see this output:
Resource usage:
Memory in use (percentage/used/max-heap): (\"6%\" \"228M\" \"3342M\")
CPU usage (how-many-cpu's/load-average): [6 1.81]
Free memory in jvm: [363319552]"
Perhaps I am reading this wrong? It looks like the app is not using much
RAM, yet I get an OOM error? This leaves me confused.
In the stacktrace, the line that triggers the OOM error is a line where I
write a string into Redis, using the Carmine library:
(carmine/hset document-id "alert" alert-as-string)
But the string alert-as-string is very small, only about 200 characters, so
I can not imagine how that puts any strain on memory.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.