Сервер:FAQ

(Различия между версиями)
Перейти к: навигация, поиск
(Изменение объема оперативной памяти, выделяемой для работы сервера)
Строка 145: Строка 145:
 
* В четвертой колонке, содержащей defaults,noexec,nodev,noatime удаляем опцию noexec
 
* В четвертой колонке, содержащей defaults,noexec,nodev,noatime удаляем опцию noexec
 
* Перезагружаем компьютер
 
* Перезагружаем компьютер
 +
 +
=== Не удается зайти в администрирование сервера. Выдает окошки с текстом: ... could not fork new process for connection: Resource temporarily unavailable ===
 +
 +
Проблему решили увеличением количества процессов на пользователя. Именно они и были «resource temporarily unavailable». Но если возможно, то лучше, наверное, поправить это в сервере, чтобы при входе в админку не открывать отдельное соединение на каждый прибор.
 +
 +
Увеличение числа подключений PostgreSQL у Вас описано в FAQ, может пригодится и увеличение ulimit применительно к centos. Посмотреть можно командой ulimit –a (параметр max user processes). Изменить в файле /etc/security/limits.conf добавив строку типа: “* - nproc 4096” и перезагрузить систему.
 +
 +
Автор ответа: Коршунов В.Г.

Версия 11:34, 18 июня 2014

Содержание

Общие вопросы

Какая версия PostgreSQL нужна для работы?

Не ниже 8.4. Необходима поддержка RETURNS в UPDATE запросах, версия 8.1 этого не поддерживает. Рекомендуется ставить версию не ниже 9.х

LocarusInformer тормозит и отваливается при получении данных

Разделяйте порты. Если у вас на один TCP порт шлют данные 1500 приборов и одновременно с этим качают треки 200 клиентов то тормозить будет 100%. Если у вас приборы работают на порту 1128, переключите все LI на 1130. И почувствуйте разницу.

Зачем нужна синхронизация времени? Можно ли ее отключить? (UDP порт 123)

Сервер создается в расчете на распределенное "облачное" хранение данных, поэтому каждый пакет данных имеет уникальный в мировом масштабе идентификатор, который формируется с использованием времени по Гринвичу. Если вы используете один изолированный сервер то от синхронизации времени можно отказаться. Для отключения синхронизации используйте параметр TIMESYNC_ENABLE=false в conf/LocarusServer.conf

Можно ли использовать сервер без доступа к HTTP (80-й порт)

Можно. Для этого нужно

  • Установить в conf/LocarusServer.conf реальный внешний IP адрес сервера параметром SERVER_ADDRESS=
  • Отключить самотестирование параметром WATCHDOG_SELFCONTROL=false

При запуске locarus-xconv возникает исключение java.lang.OutOfMemoryError: Java heap space

Добавьте java параметр -Xmx1024m, что выделит ява-машине гигабайт памяти:

java -jar -Xmx1024m locarus-xaconv.jar ...

Если будет еще недостаточно, попробуйте выделить больше. Если не получится - импортируйте данные в несколько этапов, используя ключи locarus-xconv:

  • -noclear - добавить данные к имеющимся без предварительной очистки базы данных
  • -x<IMEI> - импортировать жанные начиная с указанного IMEI

Ошибка при запуске PostgreSQL сервера - Ident authentication failed for user ...

При этом база данных доступна через pgAdmin под этим именем

В pg_hba.conf найти запись

host all all 127.0.0.1/32 ident

заменить на

host all all 127.0.0.1/32 trust

Это добавит разрешение на соединение с базой для любого юзера с локального хоста.

Перестают приниматься соединения по TCP, в locarus-server.log появляется java.net.SocketException: Too many open files

Превышен лимит системы на количество одновременно открытых файловых дескрипторов. Обычно это значение установлено в 1024. Можно его увеличить, например, до 2048.

Для Linux В файл /etc/security/limits.conf Добавляем две строки

∗ soft nofile 2048
∗ hard nofile 2048

Перезагружаем систему, проверяем: ulimit -n

Для Windows В регистри, раздел

HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\Tcpip\Parameters

Устанавливаем для

TcpNumConnections 

значение 2048. Перезагружаемся.

В логах время отстает на час от системного

Поставьте апдейт Java http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html

Распаковываем архив, переходим в распакованный каталог и даем команду:

Linux:

sudo java -jar tzupdater.jar -u -v

Windows (запуск консоли от Администратора):

java -jar tzupdater.jar -u -v

Сервер непрерывно перезагружается из-за нехватки памяти

Есть два пути решения.

1. Выделить серверу больше памяти. Для этого служат ключи -Xms (минимальная память) и -Xmx (максимальная память). При запуске сервисом эти ключи указываются в файле конфигурации ваппера. Запуск в тестовом режиме:

java -jar -Xms2048m -Xmx4096m locarus-server.jar -test

2. Отключить аварийную перезагрузку при нехватке памяти. В конфиге сервера указать:

WATCHDOG_MEMORY_MIN_ABS=-1
WATCHDOG_MEMORY_MIN_REL=0

Изменение объема оперативной памяти, выделяемой для работы сервера

Оперативная память, используемая сервером, условно делится на три части:

  • heap (хип) - основная память, динамически используемая сервером для работы.
  • стек - временная память для текущих операций. объем может влиять на максимально возможное количество порождаемых тредов (threads), дескрипторы которых хранятся в стеке
  • перманентная память - предназначена для хранения констант и статических объектов

В процессе работы может возникнуть необходимость изменить выделяемый размер всех видов памяти. В тестовом режиме это делается с использованием опций при запуске сервера:

  • Heap:
java -jar -Xms2048m -Xmx4096m locarus-server.jar -test
-Xms - минимально выделяемый, -Xmx - максимально возможный объем хипа
  • Стек:
java -jar -Xss1024k locarus-server.jar -test
  • Перманентная память
java -jar -XX:PermSize=512m -XX:MaxPermSize=512m locarus-server.jar -test

Опции можно определять в любых комбинациях

java -jar -Xms2048m -Xmx4096m -Xss1024k-XX:PermSize=512m -XX:MaxPermSize=512m locarus-server.jar -test

При запуске сервера в качестве службы с использованием враппера параметры распределения памяти указываются в настройках враппера

  • Для Linux/Unix/Aix/Solaris/MacOS
Файл конфигурации /usr/local/locarus/conf/wrapper.conf
Используются ключи конфигурации:
 wrapper.java.additional.1 = -Xms1024m
 wrapper.java.additional.2 = -Xmx1024m
 wrapper.java.additional.3 = -Xss1024k
 wrapper.java.additional.4 = -XX:MaxPermSize=512m
 wrapper.java.additional.5 = -XX:PermSize=512m
Обратите внимание на нумерацию ключей. Если вы используете дополнительные опции, 
или не все из перечисленных, нумерация должна быть приведена к нужной 
последовательности.
  • Для Window:
Файл C:\java\locarus\bin\server-control.bat
Используется установка переменных среды, значения в мегабайтах:
 REM JVM configuration
 set PR_JVMMS=2048
 set PR_JVMMX=4096
 set PR_JVMSS=4
 set PR_JVMOPTIONS=-XX:MaxPermSize=512m;-XX:PermSize=512m;
Распределение перманетной памяти задается в списке дополнительных параметров

MS Windows

При установке под MS Windows 7 и Windows Server 2003 возникает ошибка

- Problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed

После установки при этом сервер PostgreSQL не запущен.

  • Запускаем службу "Вторичный вход в систему" или "Secondary Logon"
  • В панели Управление (Management) проверяем наличие пользователя postgres, если его нет, создаем, назначаем пароль, добавляем в группу Администраторы.
  • Устанавливаем полные права доступа на папку "C:\Program Files\PostgreSQL\9.0\data\" для пользователя postgres
  • Устанавливаем PostgreSQL повторно, запустив его от имени созданного пользователя postgres.

Если и после этого служба не стартует - нужно установить в свойствах службы "Вход в систему" (Log On) - "С системной учетной записью" (Local System Account)

Локарус-сервер не стартует службой. Не может найти wrapper

В конфиге wrapper-server внизу файла есть строка - wrapper.java.app.jar = %WORKING_DIR%/locarus-server.jar вместо %WORKING_DIR% надо указать полный путь

Linux

При запуске сервера возникает ошибка: failed to map segment from shared object: Operation not permitted

  • Открываем файл /etc/fstab
  • Ищем строку содержащую во второй колонке /tmp
  • В четвертой колонке, содержащей defaults,noexec,nodev,noatime удаляем опцию noexec
  • Перезагружаем компьютер

Не удается зайти в администрирование сервера. Выдает окошки с текстом: ... could not fork new process for connection: Resource temporarily unavailable

Проблему решили увеличением количества процессов на пользователя. Именно они и были «resource temporarily unavailable». Но если возможно, то лучше, наверное, поправить это в сервере, чтобы при входе в админку не открывать отдельное соединение на каждый прибор.

Увеличение числа подключений PostgreSQL у Вас описано в FAQ, может пригодится и увеличение ulimit применительно к centos. Посмотреть можно командой ulimit –a (параметр max user processes). Изменить в файле /etc/security/limits.conf добавив строку типа: “* - nproc 4096” и перезагрузить систему.

Автор ответа: Коршунов В.Г.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты