2016-06-10 50 views
0

我想對大約10 mio行進行簡單查詢。 我有32GB內存(20GB是免費的)。而Cassandra正在使用這麼多的內存,以至於可用的RAM被最大限度地利用,並且這個進程被終止。 我如何優化Cassandra?我已閱讀「調整Java資源」並更改Java堆大小,但我仍然沒有解決方案。Cassanda,可用的RAM最多可用

+0

10 mio行在一個partiton?或不同的分區? –

+0

一個分區.. – KTBFFH

回答

1

卡桑德拉將盡可能多地使用系統上可用的內存。這是一個貪婪的過程,並將使用任何可用內存進行緩存,與內核頁面緩存的工作方式類似。如果Cassandra使用所有主機內存,請不要擔心,它只會在緩存中,並在必要時發佈到其他進程。

如果您的查詢遭遇超時,則可能是因爲從單個分區讀取太多數據,以致查詢無法在read_request_timeout_in_ms下返回。如果出現這種情況,應該考慮減小分區大小。

+0

感謝您的解釋。 是的,這是一個非常貪婪的過程..大約需要15分鐘,直到我的RAM被用到最大。然後我收到一條消息「進程死亡」。 那麼我怎麼可以減少這種用法呢?只是爲了讓我的分區更小? – KTBFFH

+0

可能有很多東西可能會影響內存使用情況。發生這種情況時你正在查詢數據嗎?你在機器上運行其他進程嗎?事實上,你得到進程死亡意味着它是內核殺死守護進程 - 這並不一定意味着它使用了太多的內存,但你的系統整體是(和Cassandra有最高的殺手鐗評分)。 – Kurt

相關問題