[
https://issues.apache.org/jira/browse/CASSANDRA-7303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Shawn Kumar updated CASSANDRA-7303:
-----------------------------------
Labels: crash outofmemory qa-resolved (was: crash outofmemory)
> OutOfMemoryError during prolonged batch processing
> --------------------------------------------------
>
> Key: CASSANDRA-7303
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7303
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: Server: RedHat 6, 64-bit, Oracle JDK 7, Cassandra 2.0.6
> Client: Java 7, Astyanax
> Reporter: Jacek Furmankiewicz
> Labels: crash, outofmemory, qa-resolved
>
> We have a prolonged batch processing job.
> It writes a lot of records, every batch mutation creates probably on average
> 300-500 columns per row key (with many disparate row keys).
> It works fine but within a few hours we get error like this:
> ERROR [Thrift:15] 2014-05-24 14:16:20,192 CassandraDaemon.java (line |
> |196) Except |
> |ion in thread Thread[Thrift:15,5,main] |
> |java.lang.OutOfMemoryError: Requested array size exceeds VM limit |
> |at java.util.Arrays.copyOf(Arrays.java:2271) |
> |at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)|
> |at java.io.ByteArrayOutputStream.ensureCapacity |
> |(ByteArrayOutputStream.ja |
> |va:93) |
> |at java.io.ByteArrayOutputStream.write |
> |(ByteArrayOutputStream.java:140) |
> |at org.apache.thrift.transport.TFramedTransport.write |
> |(TFramedTransport.j |
> |ava:146) |
> |at org.apache.thrift.protocol.TBinaryProtocol.writeBinary |
> |(TBinaryProtoco |
> |l.java:183) |
> |at org.apache.cassandra.thrift.Column$ColumnStandardScheme.write |
> |(Column. |
> |java:678) |
> |at org.apache.cassandra.thrift.Column$ColumnStandardScheme.write |
> |(Column. |
> |java:611) |
> |at org.apache.cassandra.thrift.Column.write(Column.java:538) |
> |at org.apache.cassandra.thrift.ColumnOrSuperColumn |
> |$ColumnOrSuperColumnSt |
> |andardScheme.write(ColumnOrSuperColumn.java:673) |
> |at org.apache.cassandra.thrift.ColumnOrSuperColumn |
> |$ColumnOrSuperColumnSt |
> |andardScheme.write(ColumnOrSuperColumn.java:607) |
> |at org.apache.cassandra.thrift.ColumnOrSuperColumn.write |
> |(ColumnOrSuperCo |
> |lumn.java:517) |
> |at org.apache.cassandra.thrift.Cassandra$get_slice_result |
> |$get_slice_resu |
> |ltStandardScheme.write(Cassandra.java:11682) |
> |at org.apache.cassandra.thrift.Cassandra$get_slice_result |
> |$get_slice_resu |
> |ltStandardScheme.write(Cassandra.java:11603) |
> |at org.apache.cassandra.thrift.Cassandra
> The server already has 16 GB heap, which we hear is the max Cassandra can run
> with. The writes are heavily multi-threaded from a single server.
> The jist of the issue is that Cassandra should not crash with OOM when under
> heavy load. It is OK to slow down, even maybe start throwing operation
> timeout exceptions, etc.
> But to just crash in the middle of the processing should not be allowed.
> is there any internal monitoring of heap usage in Cassandra where it could
> detect that it is getting close to the heap limit and start throttling the
> incoming requests to avoid this type of error?
> Thanks
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)