Видимо, из-за того что у нас было настроен OpenFire хранить Offline Message, а также Arhiving Message, база выросла почти до 900Мб, после отключения этих фич (Offline - просто Drop) и перезапуском сервера, база всё-равно не уменьшается.
Потом опять включил - он показывает:
Current Search Index - The current size of the message index. 1.4 MB
Archived Message Count - The total number of archived messages. 230184
Archived Conversation Count - The total number of archived conversations. 28652
нажал RebuildI Index - не помгло, но информация изменилась:
Current Search Index - The current size of the message index. 9.1 MB
Archived Message Count - The total number of archived messages. 230314
Archived Conversation Count - The total number of archived conversations. 28672
Отключил Arhiving, и нажал кнопку Rebuild Index.
Сервер установлен на W2k3 Standart x64 с 12Г ОЗУ.
Openfire 3.6.3, аутентификация пользователей на сервере через LDAP AD, на клиентах не сквозная аутентификация - пароль ручками забиваем.
причем сервис OpenFire не стартует с ключами для явы ниже: -Xms1536m -Xmx1536m в конфигурационных файлах: openfired.vmoptions и openfire-service.vmoptions.
Причем если запускаю как служба то валится куча ошибок в окне OpenFire с кнопкой Launch Admin и в итоге клиенты не цепляются, если запускаю openfired.exe с командной строки а потом жму Start в окне OpenFire с кнопкой Launch Admin тогда клиенты могут цеплять, клиенты - QIP Infium, Spark и Pandeon.
Думал перехать с базы HSQLDB (согласно статьи
http://www.igniterealtime.org/community/docs/DOC-1540), смог запустить HSQLDBUTIL(ярлыком:
"C:\Program Files (x86)\Openfire\jre\bin\java.exe" -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=8 -Xms1536m -Xmx1536m -cp "C:\hsqldbutil\hsqldbutil.jar";"C:\hsqldbutil\hsqldb.jar";"../../..\lib\mysql.jar" org.hsqldb.util.Transfer
), прописав недостающие переменные окружения (ANT_HOME на C:\ant\bin думал что нужна для распаковки формата сжатия Pack200 для hsqldbutil.jar.pack, classpath на C:\hsqldbutil\hsqldbutil.jar), но запустив не понятно как там проводить импорт.
Далее решил в ручную импортировать базу в другие СУБД - отличные от HSQLDB, взяв пример настроек из
http://www.igniterealtime.org/builds/wildfire/docs/latest/documentation/database.html#hsql НА MSSQL Server не получилось из-за ограничение по индексам в 900 байт.
НА MySQL проблема с перекодировкой в формат UTF-8, сразу скажу пробовал - есть такой пакет GnuWin32 и есть iconv, команда iconv -f WINDOWS-1251 -t UTF-8 типа всё замечательно приобразовывает, но возникает проблема импорта в базу, при этом использую HeidiSQL, который затыкается на 85Мб импорта.
написал скрипт WMI:
On Error Resume Next
strSrcFile = "C:\in.txt"
strOutFile = "C:\OUt"
FuncImportFileToAnotherFileWithChange strSrcFile, strOutFile, ";"
Wscript.Echo "End"
Wscript.Quit
'***************************************************************
'----------------функция----------------------------------------
Function FuncImportFileToAnotherFileWithChange(FileNameSrc,FileNameOut,TexttoAdd)
'------------------------Константы для задания типа открытия файла
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const OverwriteTrue = True, OverwriteFalse = False, UnicodeTrue = True, UnicodeFalse = False
Const ReadOnlyDeletionTrue = True, ReadOnlyDeletionFalse = False
Const LimitStringOfFile = 3
' Объявляем переменные
Dim objFSO, FOut, objFSO2, flag_ChangeNameOfOutFile, Counter, GlobalCounter, CounterOfFiles
' Создаем объект FileSystemObject
Set objFSO=WScript.CreateObject("Scripting.FileSystemObject")
Set objFSO = CreateObject( "Scripting.FileSystemObject" )
Set objSrcFile = objFSO.OpenTextFile( FileNameSrc, ForReading )
' Set FOut = objFSO2.OpenTextFile (FileNameOut,ForAppending,UnicodeTrue)
flag_ChangeNameOfOutFile=True
Counter=0
GlobalCounter=0
CounterOfFiles=0
While Not objSrcFile.AtEndOfStream
If flag_ChangeNameOfOutFile Then
' Открываем выходной файл для записи
Set objFSO2=WScript.CreateObject("Scripting.FileSystemObject")
Set FOut = objFSO2.CreateTextFile(FileNameOut & "_" & CounterOfFiles & ".txt", OverwriteTrue,UnicodeTrue)
flag_ChangeNameOfOutFile = False
Counter = 0
Else
End If
'strComputer=objSrcFile.ReadLine
' Записываем текстовую строку в файл
'по условию
'If Mid(STR1,14,) <> STR2
FOut.WriteLine objSrcFile.ReadLine & TexttoAdd' & vbcrlf
If Counter=LimitStringOfFile Then
flag_ChangeNameOfOutFile=True
FOut.Close
CounterOfFiles = CounterOfFiles + 1
Else
End If
Counter = Counter + 1
GlobalCounter = GlobalCounter + 1
WEnd '------------------------цикл перебора строк файла
objSrcFile.Close
FOut.Close
Wscript.Echo GlobalCounter
End Function
'******************************************
делящий большой фай на части по 100000 записей, и добавляющий в конце каждого insert точку с запятой, получилось 37 фалов, при импорте говорит что необрабатываемая Escape последовательность(покрайней мере так говорит на PostgreSQL), поскольку в формате unicode там записаны \uNNNN, хотя прогонял iconv
Кто то на форуме посоветовал не париться с MySQL и его перекодировками, а поставить PostgreSQL, поставил при чистом импорте запросов через PgAdminIII 1.10 ошибку синтаксиса, да и 800 метровый файл не просто импортировать.
Эти 37 файлов, к томуже с ненужными Insert-ами Arhiving и offline messages буду инпортировать неделю (хотя сервах HP DL360 2хпроц HT правда + подключен к SAN).
В связи с этим два вопроса:
1.Как уменьшить базу HSQLDB с 900 метров, (когда открываю файл openfire.script программой AlkePad, то нахожу в нем кучу инсертов в offline таблицу а также в другие таблицы, не входящие в описание, например ENTMESSAGEARCHIVE - вероятно это архивные сообщения)?
2.Куда лучше (в какую базу) и как импортироваться, поскольку больше увеличить информацию под java не представляется возможным - с параметрами имеюшими большее значение -Xms1536m -Xmx1536m просто OpenFire не стартует с ними, а с 900 метрами базы перезд затруднен, надо рруками много лопатить, когда результат перелопачивания ещё не очевиден т.е. может просто не получиться? (информация на
http://www.igniterealtime.org/community/docs/DOC-1540 весьма скудна)
ПОМОГИТЕ ЛЮДИ!!!