Отказ от ответственности. Во-первых, я не SU. Я компьютерный пользователь среднего уровня с небольшим опытом. Я могу написать базовый код, использую компьютеры более 20 лет. MSDOS, для Windows через годы я нахожусь на OS X. Я искал высоко и низко в течение нескольких недель и поэтому решил прийти к большому оружию, чтобы попросить о помощи. Я надеюсь, что вы в порядке с этим.
Во-первых, я на OS X 10.11.6
.
У меня возникла проблема с моим программным обеспечением для резервного копирования Crashplan, и я работал над ним с сотрудниками службы поддержки. Все сводилось к ошибке:
java.io.FileNotFoundException (Too many open files in system)
Я прочитал и обнаружил, что мне нужно увеличить количество открытых файлов, разрешенных в моей системе. Я сделал это, создав и изменив значения файлов, расположенных в /Library/LaunchDaemons
.
Я создал два файла:limit.maxfiles.plist
и limit.maxproc.plist
В пределах limit.maxfiles.plist
я разместил:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>54000</string>
<string>54000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
и в пределах limit.maxproc.plist
я разместил:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxproc</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxproc</string>
<string>4096</string>
<string>4096</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
Я перезапустил и проверил, что это вступило в силу, запустив launchctl limit maxfiles
на терминале. Это показало, что это было в действительности.
Я снова запустил аварийный план, и он выдал ту же ошибку. Я проверил с крашпланом людей, и они в основном сказали жестко, вот в чем проблема, иди исправляй это (я думаю, это достаточно справедливо).
Таким образом, я продолжал увеличивать количество файлов, разрешенных для открытия, пока не достиг 900000000). Да, в общей сложности разрешено открыть 900 миллионов файлов. Больше, чем у меня на моем общем диске. Ошибка по-прежнему сохраняется. Проверка с launchctl limit maxfiles
показывает, что это действует.
Итак, это оставило меня в тупике. Затем я огляделся и обнаружил, что могу запустить команду, подобную ulimit -S -n 900000
которая даст какой-то другой части системы больше файлов для воспроизведения. Я не уверен, как это работает, но я проверил ulimit -a
и это было в действительности. Та же проблема с Crashplan, хотя.
Так что теперь я не уверен, что делать, поэтому я пришел спросить людей, которые знают ОС лучше, чем большинство. Может кто-нибудь предложить какое-то руководство относительно того, что я могу попытаться решить эту проблему?
Спасибо.