“每个进程有100个线程的限制,所以当我超过这个限制时,我得到:java.lang.OutOfMemoryError:无法创建新的本地线程 Compojure正在使用码头环适配器,是否将服务器的配置设置为一次只接受一百个线程到servlet?“Compojure OutOfMemoryError:无法创建新的本机线程
似乎这里是一个简洁的解决方案,但它似乎已经过时:
Limiting the number of threads Compojure spawns
我把这个在我的project.clj:
:dependencies [[org.clojure/clojure "1.6.0"] [compojure "1.1.8"] [ring/ring-json "0.3.1"] [c3p0/c3p0 "0.9.1.2"] [org.clojure/java.jdbc "0.2.3"] [cheshire "5.4.0"] [ring/ring-jetty-adapter "1.1.8"] [environ "0.2.1"] [hiccup "1.0.0"] [com.novemberain/monger "2.0.0"] [org.clojure/data.json "0.2.5"]]
,我把这个在我控制器文件:
(:import [org.mortbay.thread.QueuedThreadPool])
...
(defn -main [] (run-jetty app {:port (if (nil? (System/getenv "PORT")) 8000 ; localhost or heroku? (Integer/parseInt (System/getenv "PORT"))) :configurator #(.setThreadPool % (QueuedThreadPool. 100)) }))
当我尝试,我得到:
异常在线程“主” java.lang.IllegalArgumentException异常:无法解析的类名:QueuedThreadPool,编译:
能否请您给我的建议什么clojure插件注入我的图书馆,以避免惊吓Heroku每100进程限制100线程?
我不相信这是在Heroku 100线程限制。在1X dyno上有256个进程/线程/打开文件限制:https://devcenter.heroku.com/articles/limits#processes-threads – codefinger