cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Cassandra Wiki] Update of "Operations" by GabrieleRenzi
Date Fri, 14 May 2010 06:40:38 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "Operations" page has been changed by GabrieleRenzi.
The comment on this change is: add note relte to failing snapshotting.
http://wiki.apache.org/cassandra/Operations?action=diff&rev1=50&rev2=51

--------------------------------------------------

  See PerformanceTuning
  
  == Schema management ==
- 
  See LiveSchemaUpdates [refers to functionality in 0.7]
  
  == Ring management ==
@@ -118, +117 @@

  == Backing up data ==
  Cassandra can snapshot data while online using `nodetool snapshot`.  You can then back up
those snapshots using any desired system, although leaving them where they are is probably
the option that makes the most sense on large clusters.
  
+ With some combinations of operating system/jvm you may receive an error related to the inability
to create a process during the snapshotting, such as this on Linux
+ 
+ {{{
+ Exception in thread "main" java.io.IOException: Cannot run program "ln": java.io.IOException:
error=12, Cannot allocate memory
+ }}}
+ Remain calm. The operating system is trying to allocate for the "ln" process a memory space
as large as the parent process (the cassandra server), even if '''it's not going to use it'''.
So if you have a machine with 8GB of RAM and no swap, and you gave 6 to the cassandra server,
it will fail during this because the operating system will wan 12 GB of memory before allowing
you to create the process.
+ 
+ This can be worked around depending on the operating system by either creating a swap file,
snapshotting, turning it off or by turning on "memory overcommit". Since the child process
memory is the same as the parent, until it performs an `exec("ln")` call the operating system
will not use the new memory and will just refer to the old one, and everything will work.
+ 
  Currently, only flushed data is snapshotted (not data that only exists in the commitlog).
 Run `nodetool flush` first and wait for that to complete, to make sure you get '''all'''
data in the snapshot.
  
  To revert to a snapshot, shut down the node, clear out the old commitlog and sstables, and
move the sstables from the snapshot location to the live data directory.

Mime
View raw message