Thursday, April 9, 2009

mac os x limits

немного посмеявшись над ребятами, которые пытались определить, сколько же «приложений» выдержит мак, мне самому пришлось столкнуться с некоторой ограниченностью системных лимитов.

оказывается, что в mac os x 10.5 по умолчанию одним пользователем можно открыть не более 266 приложений. при этом часть из них — системные сервисы, поэтому реально запущеных приложений будет меньше. если такого количества не хватает, то можно увеличить лимит и об этом пойдет речь ниже.

но, к сожалению, эти лимиты тоже не бесконечны и довольно невелики. это значит то, что если вам вдруг понадобится производительный сервер, то mac os x вам этого просто не позволит сделать, несмотря на всю юникс начинку внутри.

как известно, у макоси есть две версии, клиентская и серверная. сейчас я буду говорить за первую, потому как второй в доступности нет.

как показывает команда «sysctl -a | grep maxproc», операционная система ограничила себя до 532 процессов в целом и не более 266 на одного пользователя. не очень–то пожируешь. ну что ж, на то нам дадены руки.

sysctl -w kern.maxproc=4096
sysctl: kern.maxproc: Invalid argument

опа, а это что такое?

это оказалось, что в ядре операционной системы записан жесткий лимит в 2500 соединений. превысить его можно только после пересборки ядра. то есть запустить под mac os x client более 2500 процессов невозможно.

в server 10.4.11 тоже есть подобный лимит, только он чуть ниже — 2068

для увеличения лимита можно добавить информацию в два файла:

/etc/sysctl.conf и /etc/launchd.conf

первый управляет ограничениями в ядре, а второй — в запускаемых приложениях операционной системы.

/etc/sysctl.conf
kern.maxprocperuid=1024
kern.maxproc=2048

/etc/launchd.conf
limit maxproc 512 1024