Установка Cassandra с настройками по умолчанию. Просто сервер с одним узлом, 48 ГБ оперативной памяти, 2 ТБ жесткого диска. Было вставлено около 80 миллионов строк, когда он значительно замедлился. Новые подключения отклоняются с ошибкой тайм-аута.
Opssenter также выбрасывает тайм-ауты.
htop показывает 1 процесс cassandra, который загружает процессор на 100%
iotop показывает периодические чтения\записи, но очень малоинтенсивные - так что HDD не является узким местом
много оперативной памяти еще свободно и ничего не менялось
nodetool tpstats - не работал, раздавлен с "java.net.SocketTimeoutException: время чтения истекло"
статус nodetool - показывает, что сервер работает нормально (!): UN, загрузка 122GB, Owns 100%, токенов 256
tail /var/log/cassandra/system.log — для меня ничего информативного, последняя строчка
INFO [ScheduledTasks:1] 2014-02-16 04:36:21,824 StatusLogger.java (line 121) system.local
Что происходит? Как найти список выполняемых в данный момент операций? Как найти причину такого поведения? И как привести его в норму?
Спасибо!
P.S. В итоге выдало исключение:
ОШИБКА [ReadStage: 1550] 2014-02-16 05:22:26,476 CassandraDaemon.java (строка 192) Исключение в потоке Thread[ReadStage:1550,5,main] java.lang.OutOfMemoryError: пространство кучи Java в org.apache. cassandra.io.util.RandomAccessReader.(RandomAccessReader.java:69) в org.apache.cassandra.io.compress.CompressedRandomAccessReader.(CompressedRandomAccessReader.java:76) в org.apache.cassandra.io.compress.CompressedRandomAccessReader.open( CompressedRandomAccessReader.java:43) в org.apache.cassandra.io.util.CompressedPoolingSegmentedFile.createReader(CompressedPoolingSegmentedFile.java:48) в org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:39) в org. .apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1195) в org.apache.cassandra.db.columniterator.IndexedSliceReader.setToRowStart(IndexedSliceReader.java:108) в org.apache.cassandra.db.columniterator .IndexedSliceReader.(Inde xedSliceReader.java:84) в org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:65) в org.apache.cassandra.db.columniterator.SSTableSliceIterator.(SSTableSliceIterator.java:42) в org. apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:167) в org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62) в org.apache.cassandra.db.CollationController. collectAllData(CollationController.java:273) в org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53) в org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1560) в org.apache .cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1379) в org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:327) в org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadC ommand.java:65) в org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1396) в org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1931) в java .util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) в java.lang.Thread.run(Thread.java:744)