FreeBSD mbuf и nmbclusters (или сколько нужно памяти вашему серверу)

Каждое сетевое соединение потребляет определенный объем памяти ядра, чем больше соединений, тем больше памяти нужно и тем ближе момент, когда в списке процессов можно будет увидеть статус zoneli (zonelimit). Но обо всем по порядку.

Для каждого TCP соединения ядро выделяет два буфера, буфер на прием и буфер на отправку данных. Эти значения задаются параметрами net.inet.tcp.sendspace и net.inet.tcp.recvspace. По умолчанию они равны 32 и 64 килобайтам. Т.е. чтобы поддерживать одно соединение нужно 96К памяти ядра. Это конечно не совсем так, так как кроме этих буферов используются и другие ресурсы, с другой стороны не факт, что соединению потребуется буфер целиком. В man tuning для определения потребляемой памяти для TCP соединений придерживаются правила “x2″, т.е. увеличивают вдвое расчетные параметры. Я бы сказал что при значениях буферов 32К и 64К двойной запас прочности излишен, лучше домножить на 1,5.
В результате получаем, что для обслуживания 1000 одновременных соединений требуется
1000 * (64 + 32) * 1,5 = 144000К памяти.
А сколько памяти разрешено ядру выделять под TCP соединения в данный момент? Это определяет параметр ядра kern.ipc.nmbclusters. Для буферов приема и отправки ядро используется mbuf, число которых как раз определяется nmbclusters, каждый кластер занимает 2К, т.е. чтобы определить сколько nmbclusters нужно для обслуживания 1000 TCP соединений, нужно поделить полученный объем необходимой памяти на размер кластера
144000 / 2 = 72000
Т.е. нужно установить kern.ipc.nmbclusters = 72000
Если мы ошиблись и кластеров не хватит, то процесс который их не получит перейдет в состояние zonelimit (в top будет видно zomeli). Чтобы проверить текущее потребление mbuf можно воспользоваться netstat
# netstat -m

512/418/930/25600 mbuf clusters in use (current/cache/total/max)


Четверг, Октябрь 15th, 2009 Советы
Tinkerbell Personal Checks |Garden Planters | Jewellery For Women | Best Dog Foods | Budget Wedding Gowns | Shop For Jewellery | Vintage Jewellery| Diamante Jewellery | Car Finance Credit | DoorStep Loans