powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Cassandra и память
10 сообщений из 10, страница 1 из 1
Cassandra и память
    #37882007
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучаю cassandry. Версия 1.1.2
Библиотеки для касандры взял astynax
Java 6.
Windows


Вообщем есть простейший код создающий объект вида ключ/значение
общий объем каждого объекта около 2кб.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
		try {
			for(int c = 0; c<=100000; c++){
				m.withRow(CF_USER_INFO, "a"+c)
				  .putColumn("s", c + ":" + s );
				if(c%1000==0){ m.execute(); };				
			}
			m.execute();			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}



В цикле создаю в базе по 10, 20, 100 тыщ объектов. Тестирую.
Работает очень быстро. Просто пипец летает. SQL субд рвет ака роко сифреди девушку.

Но есть одна проблема. Не очищается память. Память используется именно движком кассандры. После каждого прогона она вырастает и назад не освобождается. Проверял долго.
Что на 10 что на 100 тыщах одна и таже ситуация.
Вижу по диспечеру процессов.Думал дело в интервалах работы сборщика, но на ночь оставлял, приходил, а картина та же. с какой памятью ее оставил с такой же она была и утром.
Почему он оставляет память занятой ведь совершенно точно что даныне объекты на диск уже сброшены и еще ни разу на чтение не запрашивались?

Знаю что касанадра сперва накапливает объекты в памяти, а затем пишет их большой пачкой в коммит лог и только после этого в саму базу. но интервалы такого поведения в настройках стоят на 10 секундах. Да, есть способ изменить алгоритм работы с коммитлогом и заставить его кидать на диск данные без задержки но и это почему то не спасает от переполнения памяти и к тому же идет потеря скорости работы.

вот конкретно пример для 10 тыщ объектов:
- касандра тока стартовала - занимает 80М в памяти
- запустил прогу с добавлением 10 тыщ объектов - выросло до 148М
- закрыл приложение. у касандры все равно 148М.
- снова запустил прогу и погнал скрипт. касандра выросла до 250M. причем я скрипт не менял, а значит там не новые объекты создавались а апдейтились уже сущесвующие(там так работает).
- снова запустил - опять теже самые объекты но память выросла еще до 340М.
- и т.д.
- растет до максимума и рано или поздно падает, причем с разными ошибками, то Map failed по причине out of memory, то трифтовый сервис скажет read 0 байт и тоже отшибет соединение.


- если сразу зафигачить мллион объектов то Map failed практически гарантировано.



Что не так делаю? может что-то нужно закрывать после execute? хотя вроде в доках про это ничего нет.
Что можно еще настроить в касандре?
Или ее ненадежность это фича а не бага?

PS пробовал как на голой касандре так и на касандре в составе DataStax - один фиг.
...
Рейтинг: 0 / 0
Cassandra и память
    #37882256
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, а она должна возвращаться со временем к исходному состоянию по занимаемой памяти, при условии что нагрузки нет?
...
Рейтинг: 0 / 0
Cassandra и память
    #37882727
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Касандра это экзотика?

svenooooooom!! ты ж вроде проект на ней собирался делать)

как же на склру не хватает функционала личных сообщений.
...
Рейтинг: 0 / 0
Cassandra и память
    #37882744
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кореец,

Здесь есть форум по nosql. Попробуйте спросить там. Плюс, у таких проектов хорошее community - спросите в их почтовой рассылке.
...
Рейтинг: 0 / 0
Cassandra и память
    #37882796
eextrasens
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КореецКасандра это экзотика?

svenooooooom!! ты ж вроде проект на ней собирался делать)

как же на склру не хватает функционала личных сообщений.


Он уже не программистишка больше и ничего сам не собирался
а дураков походу не нашлось
...
Рейтинг: 0 / 0
Cassandra и память
    #37882798
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРаботает очень быстро. Просто пипец летает. SQL субд рвет ака роко сифреди девушку.
Я сейчас провел некоторые тесты на офисном компьютере.
Запись в файл 200Мб занимает 13с.
Запись в таблицу (id, text) 100000 строк по 2кб каждая занимает 40с.
Даже если кассандра пишет со скоростью диска, то разница равна 3x. А она наверняка пишет медленнее.
В общем, как роко сифреди девушку не получается.
...
Рейтинг: 0 / 0
Cassandra и память
    #37884492
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪА она наверняка пишет медленнее.
В общем, как роко сифреди девушку не получается.

только что проверил на компе. core2Duo 2Гц. 2Гб оперативки.

обе базы локальные. ничего иного комп не нагружает.


100 тыщ коротких строчек. несколько прогонов теста

для майскл
Код: java
1.
2.
3.
4.
5.
6.
7.
	String s = "asdas";
		for (int c = 0; c<= 100000; c++){
			ps.setInt(1, c);
			ps.setString(2, c + ":" + s);
			ps.execute();
		}
		conn.commit();



для кассандры
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
		String s = "asdas";		
		try {
			for(int c = 0; c<=100000; c++){
				m.withRow(CF_USER_INFO, this.key+c)
				  .putColumn("s", c + ":" + s );
				if(c%100==0){ m.execute(); };				
			}
			m.execute();			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}



Кассандра стабильно 4-5 сек.
Майскл 13-15 сек.

Скорость выше в 3 раза.

Такие соотношения существенны. Рвет. И еще как)))
...
Рейтинг: 0 / 0
Cassandra и память
    #37884541
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Commit в mysql гарантирует, что данные оказались на жестком диске и не пропадут в результате сбоя электричества. Кассандра таких гарантий не дает. Чтобы не сравнивать яблоки с апельсинами, уберите коммит после каждой строчки и выключите автокоммит.
Кстати, откуда вы берете столько данных (десятки тысяч строк в секунду)? Если это не OLTP, а импорт, то для него в РСУБД есть специальные средства.
...
Рейтинг: 0 / 0
Cassandra и память
    #37884545
Йуный джавистЪ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я поспешил, в варианте с mysql коммит за пределами цикла.

Какие результаты для вставки данных, количество которых в разы превышает размер оперативной памяти? Например, 10Гб?
...
Рейтинг: 0 / 0
Cassandra и память
    #37884555
Кореец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪКассандра таких гарантий не дает.

а зачем она тогда ведет commitlog?)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Cassandra и память
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]