Cервер HSQLDB 1.8.0.10 - как избавиться от тормоза?

Автор serkondr, 25 октября 2015, 10:13

0 Пользователи и 1 гость просматривают эту тему.

serkondr

Доброго времени суток!

В 2011 г. сделал на работе для себя программу учёта по складу на ООО 3.3.0 от "Инфра-ресурс" с использованием сервера HSQLDB 1.8.0.10, работающего под Линукс-Минт (сначала версии 11, сейчас - уже 16). Поставил под него машину с процессором I7-4770K  (4x3500 MHz) и SSD - диском. Подключены к серверу 8 клиентских машин с разными программами на ООО (снабженцы, технологи, кладовщик, начальники участков и я). Программист я не профессиональный, скорее любитель.
Всё работало замечательно, но в последнее время существенно (в разы) возросло количество вводимой информации, выросло количество строк в таблицах до 30000 и более. И начались страшные тормоза в работе сервера. В системном мониторе сервера  вижу загрузку одного ядра до 100% при выполнении запросов с клиентской машины. После нажатия на элементы управления в форме проходят по 15-40 сек до появления следующих элементов или строк в таблицах форм.
Времени на создание новой программы  в другой среде (1С к примеру) катастрофически нет. Все клиенты бросили работу в такой тормозной программе, всё свалилось на меня одного. База трещит, не успеваю поддерживать её в актуальном состоянии.
Можно, конечно, попробовать уговорить директора купить процессор I7-4790K  4x4000 Mhz, но, боюсь, толку не будет.
Подскажите пож-та, что можно сделать в этой ситуации, чтоб не начинать с нуля?
Спасибо.

Yakov


Yakov

Для базы "COMPACT SHUTDOWN" или "CHECKPOINT DEFRAG" делали?

serkondr

#3
Цитата: Yakov от 25 октября 2015, 11:48
Перенести сервер c HSQLDB на MySQL?

Начал попытки такого перехода. Но переписать таблицы с одного сервера на другой оказалось для меня не такой простой задачей. Нашёл прогу в инете, которая формирует SQL-скрипты для создания копий таблиц. Почему-то после выполнения около 20 строк скрипта, сервер сбоит. Если разбить скрипт на куски по 20 строк, то работает норм. Но процесс будет слишком долгим.  Правда для эксперимента с MYSQL-сервером я использовал другую, более слабую машину.
А тут один опытный программист сказал мне, что особого выигрыша ждать не стоит. Лучше, по его мнению, переходить на 1С.

Цитата: Yakov от 25 октября 2015, 12:59
Для базы "COMPACT SHUTDOWN" или "CHECKPOINT DEFRAG" делали?
тНет, не делал.  Просто CHECKPOINT прописал в планировщик, на 12.00 и на 16,00, т.к. на диск данные пишутся только через эту команду, иначе висят в ОЗУ и могут быть потеряны.
Однако я заметил такую вещь, что если создать новую локальную БД, перекопировать в неё  через ООО таблицы из серверной БД, то размеры файла data в лок.базе оказываются меньшими, в десятки раз. Хотя данные все на месте. Распаковал локальную базу и подменил файлами из неё файлы базы на сервере. Так что наверное это вышла такая окольная дефрагментация.
В результате всё работает, но тормоза не поменялись.

Yakov

#4
А на сервере какой объём ОЗУ выделен для Java?
Может, стоит увеличить объем озу, выделяемый для JVM?



serkondr

Я не менял настроек, так что объём установлен по умолчанию.
Спасибо за совет,  завтра попробую поэкспериментировать.

serkondr

Доброго времени суток!

Попробовал в терминале запустить сервер с дополнительными параметрами:
serverdb@serverdb-nT535 ~ $ java -Xmx2048M -Xms2048M  -cp /home/serverdb/hsqldb-1.8.0.10.jar org.hsqldb.Server -database.0 /home/serverdb/BASE/database_instr/instr -dbname.0 instr -database.1 /home/serverdb/BASE/database_met/krepezh -dbname.1 krepezh


[Server@380c76]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@380c76]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@380c76]: Startup sequence initiated from main() method
[Server@380c76]: Loaded properties from [/home/serverdb/server.properties]
[Server@380c76]: Initiating startup sequence...
[Server@380c76]: Server socket opened successfully in 3 ms.
[Server@380c76]: Database [index=0, id=0, db=file:/home/serverdb/BASE/database_instr/instr, alias=instr] opened sucessfully in 1418 ms.
[Server@380c76]: Database [index=1, id=1, db=file:/home/serverdb/BASE/database_met/krepezh, alias=krepezh] opened sucessfully in 154 ms.
[Server@380c76]: Startup sequence completed in 1576 ms.
[Server@380c76]: 2015-10-27 09:14:39.512 HSQLDB server 1.8.0 is online
[Server@380c76]: To close normally, connect and execute SHUTDOWN SQL
[Server@380c76]: From command line, use [Ctrl]+[C] to abort abruptly

Вроде сервер нормально стартанул на обе базы данных. Не знаю, как проверить, сколько сейчас памяти отдано под JVM.  Но тормоза всё те же, ничего не поменялось. :(

serkondr

p.s.
1. в системном мониторе показывает, что памяти используется 1,2 Гб, размер вообще не меняется, в т.ч. при запросах с клиентских машин.
2. т.к. использую SSD диск, раздела подкачки нет.

greenman

#8
http://www.hsqldb.org/web/hsqlPerformance.html

Да, и можно проверить разные версии java-машины.

Был период, когда встроенная  HSQLDB не тормозила на определённых версиях сановской джавы.

kompilainenn

мне кажется, данный вопрос надо задавать на спец.форумах, посвященным базам данных
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

serkondr

Цитата: greenman от 27 октября 2015, 11:04
Был период, когда встроенная  HSQLDB не тормозила на определённых версиях сановской джавы.

Да, я с этим когда-то сталкивался, но тормоза были на клиентской машине под линуксом. Если клиенты работали на винде, то тормозов не было.

Спасибо за ссылку, правда я не очень силён в этой теме. Насколько я вижу, таблицы у меня не кешируются, все данные сидят в ОЗУ хоть 2 недели, пока не сделаешь Checkpoint.
Загрузка ядер процессора тоже равномерная, до 100%  доходят разные ядра по очереди. Т.е. процесс многопоточный.

Yakov

Linux 32 битный?
И какой объём ОЗУ на машине?
Я сейчас проверил строку
Цитата: serkondr от 27 октября 2015, 06:22java -Xmx2048M -Xms2048M
под 32битной Win -- Java не хочет запускаться, только с 
Цитироватьjava -Xmx1024M -Xms1024M
работает.

serkondr

Минт 16, 32 бит. Памяти 8ГБ. Пробовал задать 3072 - не даёт. 2048 - работает.

kompilainenn

>Минт 16, 32 бит. Памяти 8ГБ

н-да! А вы в курсе про ограничения 32-битных ОС на память?
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

greenman

#14
Цитата: serkondr от 27 октября 2015, 11:29Да, я с этим когда-то сталкивался, но тормоза были на клиентской машине под линуксом. Если клиенты работали на винде, то тормозов не было.
Клиенты? Разве это было не при использовании встроенной базы (без всяких клиент-сервер)?

Цитата: serkondr от 27 октября 2015, 16:36
Минт 16, 32 бит. Памяти 8ГБ. Пробовал задать 3072 - не даёт. 2048 - работает.
А что
free
показывает?