Настройка shared memory
Вот такая ошибка может появлятся в логах Zoneminder’а: WAR [Buffer overrun at index 31, image 902111, slow down capture, speed up analysis or increase ring buffer size] Для оптимизации работы рекомендуется изменить значения shmmax и shmall в sysctl.conf. Но какие значения ставить shmmax и shmall? Для этого сделан небольшой скрипт. Его задача – посчитать и вывести размер shared memory, который равен половине доступной на сервере памяти (всей доступной). #!/bin/bash # simple shmsetup script page_size=getconf PAGE_SIZE phys_pages=getconf _PHYS_PAGES shmall=expr $phys_pages / 2 shmmax=expr $shmall \* $page_size echo kernel.shmmax = $shmmax echo kernel.shmall = $shmall Например, для сервера с 2Гб RAM скрипт выдаст следующее: kernel.shmmax = 1055092736 kernel.shmall = 257591 Здесь SHMMAX – максимальный размер (в байтах) на сегменте shared memory, установлен в 1 Гб. SHMALL – общее количество разделяемой памяти (в страницах), какое все процессы на сервере могут использовать. Количество байтов в странице зависит от операционной системы; в, основном, по умолчанию 4096 байт. Для того, что бы эти данные применились для Linux, выполните данную команду от root (./shmsetup – данный скрипт): ./shmsetup >> /etc/sysctl.conf И проверьте правильность: sysctl -p ЗЫ. Также не забываем про семафоры в системе: $ ipcs -l … —— Пределы семафоров ——– максимальное количество массивов = 128 максимум семафоров на массив = 250 максимум семафоров на всю систему = 32000 максимум операций на вызов семафора = 32 максимальное значение семафора = 32767 Значения в sysctl: $ sysctl kernel.sem kernel.sem = 250 32000 32 128 Все четыре значения, возможно, потребуется увеличить на системах с большим число процессов. После установки и настройки Zoneminder’а […]
Read more