WAR [Buffer overrun at index 31, image 902111, slow down capture, speed up analysis or increase ring buffer size]Но какие значения ставить shmmax и shmall? Для этого сделан небольшой скрипт. Его задача – посчитать и вывести размер shared memory, который равен половине доступной на сервере памяти (всей доступной).
#!/bin/bash# simple shmsetup scriptpage_size=getconf PAGE_SIZEphys_pages=getconf _PHYS_PAGESshmall=expr $phys_pages / 2shmmax=expr $shmall \* $page_sizeecho kernel.shmmax = $shmmaxecho 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.semkernel.sem = 250 32000 32 128Все четыре значения, возможно, потребуется увеличить на системах с большим число процессов.

Leave a Reply