打死我實現了用駱駝的碼頭成分通過阿卡(端點),它收到的郵件轉發給演員池的設置Web服務:JVM進程由OS
def receive = _route()
def lowerBound = 5
def upperBound = 20
def rampupRate = 0.1
def partialFill = true
def selectionCount = 1
def instance() = Actor.actorOf[Processor]
和處理器是一個類,處理收到的消息並回復該過程的結果。該應用程序在我的本地機器上一直正常工作,但是在將它部署到EC2微型實例(512m內存 - 如操作系統CentOS)之後,由於OutOfMemory(而不是JVM OOM),操作系統(OOM殺手)會殺死進程30個電話左右(不管電話的頻率)。
本地分析應用程序不會顯示任何重大的內存泄漏(如果完全存在)。由於一些困難,我無法在遠程機器上執行適當的分析,但監視「頂級」輸出,我觀察到一些有趣的事情,即在應用程序初始化後可用的可用內存保持在400mb左右,之後它在380mb到400mb之間反彈,這似乎很自然(gc等)。但有意思的是,在接到第30個電話後,它突然從那裏跳到5mb的空閒內存和繁榮,它被殺了。 oom-killer登錄/ var/log/messages會驗證這是否由於缺乏內存/空閒交換而由OS完成。
現在這不完全是Akka相關的,但我終於決定我應該從你們那裏尋求一些建議,經過3天無望的摔跤。
感謝您的任何線索。
您是否嘗試過減少JVM堆大小? –
是的,我設置了一個64米硬限制,但奇怪的是仍然在達到JVM限制之前被殺死。也許我應該嘗試較低的金額? – parsa