OS X 10.7.1 හි ඇති "පද්ධතියේ බොහෝ විවෘත ලිපිගොනු" සීමාවෙන් මිදීමට මට අවශ්යය.
ක්රමයක් තිබේද?
OS X 10.7.1 හි ඇති "පද්ධතියේ බොහෝ විවෘත ලිපිගොනු" සීමාවෙන් මිදීමට මට අවශ්යය.
ක්රමයක් තිබේද?
Answers:
අනුව මෙම ලිපි ලියන්නටත් (මම කියවීම නිර්දේශ කරන):
පෙරනිමියෙන්, මැක් ඕඑස් එක්ස් විවෘත කළ හැකි උපරිම ගොනු සංඛ්යාව 12,288 ලෙස සකසා ඇති අතර දී ඇති ක්රියාවලියක් විවෘත කළ හැකි උපරිම ගොනු සංඛ්යාව 10,240 කි.
ඔබට මේවා සමඟ පරීක්ෂා කළ හැකිය:
sysctl kern.maxfiles
sysctl kern.maxfilesperproc
ඔබට (ඔබේම අවදානමකින්) සීමාවන් වැඩි කළ හැකිය:
sysctl -w kern.maxfiles=20480
(හෝ ඔබ තෝරාගන්නා අංකය)sysctl -w kern.maxfilesperproc=18000
(හෝ ඔබ තෝරාගන්නා අංකය)වෙනස ස්ථිර කිරීමට, sudo
ඔබගේ සැකසීම් /etc/sysctl.conf
(ඔබට නිර්මාණය කිරීමට සිදුවිය හැකි) ඇතුළත් කිරීමට භාවිතා කරන්න,
kern.maxfiles=20480
kern.maxfilesperproc=18000
සටහන: OS X 10.10 හෝ ඊට අඩු, ඔබට /etc/launchd.conf
සමාන සැකසුම් එක් කළ හැකි limit maxfiles
අතර එය ඔබ මෙහි තබන ඕනෑම දෙයක් අභිබවා යනු ඇත.
නැවතත්, ලිපියෙන්:
ඔබ මෙය කළ පසු, කර්නලයේ උපරිම ගොනු සංඛ්යාවක් ඇති නමුත් කවචය එසේ නොවිය හැක. මෙම බොහෝ ලිපිගොනු භාර ගන්නා බොහෝ ක්රියාදාමයන් කවචය මඟින් ආරම්භ කිරීමට යන බැවින් ඔබට එය වැඩි කිරීමට අවශ්ය වනු ඇත.
ඒ සඳහා වන විධානය:
ulimit -S -n 2048 # or whatever number you choose
එම වෙනස ද තාවකාලික ය; එය පවතින්නේ වත්මන් ෂෙල් සැසිය සඳහා පමණි. ඔබ ඔබේ ෂෙල් මානකරන ගොනුව වෙත එක් කළ හැකිය ( .bashrc
, .zshrc
කුමන හෝ) ඔබ එය ඔබ ශෙලය සෑම අවස්ථාවකදීම ක්රියාත්මක කිරීමට අවශ්ය නම්.
kern.maxfiles=65000 kern.maxfilesperproc=65000
/etc/sysctl.conf දමා නැවත ආරම්භ කළෙමි . kern.maxfiles නොසලකා හරින ලද නමුත් පෙරනිමියෙන් රැඳී සිටියද kern.maxfilesperproc 65000 ලෙස සකසා ඇත. මට /etc/launchd.conf නොමැත, එබැවින් එහි ඇති තත්වය කුමක්ද?
OS X හි එක් එක් අනුවාදය සඳහා විවෘත ගොනු සීමාව වෙනස් කිරීම සඳහා සම්පූර්ණයෙන්ම වෙනස් ක්රමයක් ඇති බව පෙනේ!
OS X සියෙරා (10.12.X) සඳහා ඔබට අවශ්ය වන්නේ:
1.
ගොනුවක් සාදන්න /Library/LaunchDaemons/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>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
2. ඔබගේ නව ගොනුවේ හිමිකරු වෙනස් කරන්න:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist
3. මෙම නව සැකසුම් පූරණය කරන්න:
sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4. අවසාන වශයෙන්, සීමාවන් නිවැරදි දැයි පරීක්ෂා කරන්න:
launchctl limit maxfiles
IO Error: Bad file descriptor (Write failed)
ඔබට ඔබගේ ulimit සැකසුම් වැඩි කිරීමට අවශ්ය වනු ඇත - මේ දිනවල එය OS X හි තරමක් අඩුයි - පෙරනිමියෙන් 256. ulimit -n 4096
ඔබගේ ~ / .ප්රොෆයිල් හෝ ඊට සමාන එකතු කරන්න හෝ සමාන කරන්න, එය ඔබේ දේශීය පරිසරය තුළ විසඳනු ඇත. ulimit -a
ඔබගේ වර්තමාන මට්ටම් පරීක්ෂා කිරීමට ධාවනය කරන්න
පද්ධති සැකසුම් බැලීමට, මෙය ක්රියාත්මක කරන්න:
launchctl limit maxfiles
එය පෙර පැවති ක්රියාවලියට වඩා එක් ක්රියාවලියක් මත ලයන් (10240) හි තරමක් ඉහළින් සකසා ඇත. නමුත් ඔබ තවමත් එහි පහර දෙන්නේ නම් අපේක්ෂිත මට්ටම් සමඟ එකම විධානය භාවිතා කර ඔබට එය ඉහළ මට්ටමකට ගෙන යා හැකිය. වෙනස්කම් ස්ථිර කිරීමට /etc/launchd.conf යනු ඔබට අදාළ රේඛා එක් කළ යුතු ස්ථානයයි.
ulimit -a
).
අනෙක් විකල්පය වැරදිකරු සොයා ගැනීම විය හැකිය:
sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
අන්තිම එක සඳහා ඔබට විවෘත ගොනු මොනවාදැයි දැක ගත හැකිය:
sudo lsof -n | grep socketfil
අවශ්ය නම් ක්රියාවලිය මරා දමන්න
kill $pid
අදහස් වලින්:
එය වටින දෙය සඳහා, ඔබට වඩාත් විවෘත ලිපිගොනු භාවිතා කරමින් ක්රියාවලි හැඳුනුම්පත් ලැයිස්තුවක් ලබා ගත හැකිය
lsof -n | sed -E 's/^[^ ]+[ ]+([^ ]+).*$/\1/' | uniq -c | sort | tail
-h
(OS X 10.12.3) නොමැතිව හොඳින් වැඩ කර ඇත :sudo lsof -n | cut -f1 -d' ' | uniq -c | sort | tail
-h
lsof -n +c 0
ක්රියාවලියේ නම කප්පාදු කිරීම වැළැක්වීමට භාවිතා කරන්න .
ජනතාව, මේවරික්ස් 10.9.4
ulimit -n 2048
හොඳින් වැඩ කරයි. ඔබට නව පිවිසුම් සැසියක් දියත් කිරීමට අවශ්ය විය හැකිය.
නවතම මැකෝස් සඳහා sudo launchctl limit maxfiles 64000 524288
( ලිවීමේදී: 10.14.1), ඔබට භාවිතා කළ හැකිය (පෙරනිමියෙන් එය 256 විය), නමුත් එය ක්රියාත්මක වන්නේ වත්මන් සැසිය තුළ පමණි. ස්ථිර විසඳුමක් සඳහා launchctl
inninjaPixel ( https://superuser.com/a/1171028/760235 ) වෙතින් රැකියාව භාවිතා කරන්න .
ඔබට දුවන්න පුළුවන්
lsof -n
එම ක්රියාවලිය බොහෝ ගොනු විවෘත කරයි.
ඉන්පසු එය මරන්න.
හෝ
sysctl -w kern.maxfiles=20480
එය විශාල එකක් බවට වෙනස් කරන්න.
මගේ ජාවා වලට ඉහළින් ඇති සියලුම වෙනස්කම් වලින් පසුව ලිපිගොනු 10000 ට වඩා වැඩි ප්රමාණයක් සිදු නොවීය. විසඳුම වූයේ මෙම jvm ධජය -XX: -MaxFDLimit
Https://superuser.com/a/1171028/367819 ට සමානය
ඔබගේ මැක් ඕඑස් එක්ස් පද්ධතියේ වත්මන් සීමාවන් පරීක්ෂා කිරීමට, ධාවනය කරන්න:
launchctl limit maxfiles
අවසාන තීරු දෙක පිළිවෙලින් මෘදු හා තද සීමාවන් වේ.
මැක් ඕඑස් එක්ස් යොස්මයිට් හි පද්ධතිමය වශයෙන් විවෘත ගොනු සීමාවන් සකස් කිරීමට, ඔබ වින්යාස ගොනු දෙකක් සෑදිය යුතුය. පළමුවැන්න පහත දැක්වෙන XML වින්යාසය අඩංගු /Library/LaunchDaemons/limit.maxfiles.plist හි ඇති දේපල ලැයිස්තුවක් (aka 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>200000</string>
<string>200000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
මෙය විවෘත ලිපිගොනු සීමාව 200000 දක්වා සකසනු ඇත. දෙවන වර්ග වින්යාස ගොනුව පහත සඳහන් අන්තර්ගතයන් සමඟ /Library/LaunchDaemons/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>2048</string>
<string>2048</string>
</array>
<key>RunAtLoad</key>
<true />
<key>ServiceIPC</key>
<false />
</dict>
</plist>
ප්ලිස්ට් ලිපිගොනු දෙකම root: රෝදයට අයත් විය යුතු අතර අවසරයන් තිබිය යුතුය -rw-r - r--. මෙම අවසරයන් පෙරනිමියෙන් ක්රියාත්මක විය යුතුය, නමුත් sudo chmod 644 ධාවනය කිරීමෙන් ඒවා ක්රියාත්මක වන බව ඔබට සහතික කළ හැකිය. ඉහත විස්තර කර ඇති පියවර නැවත ආරම්භ කිරීමේදී පද්ධතිය පුරා විවෘත ගොනු සීමාවන් නිවැරදිව සැකසීමට හේතු වන අතර, දියත් කිරීමේ සීමාව ක්රියාත්මක කිරීමෙන් ඔබට ඒවා අතින් යෙදිය හැකිය.
පද්ධති මට්ටමින් මෙම සීමාවන් සැකසීමට අමතරව, සැසි මට්ටමින් මෙන්ම පහත දැක්වෙන රේඛා ඔබේ bashrc, bashprofile හෝ ප්රතිසම ගොනුවට එකතු කිරීමෙන් නිර්දේශ කරමු:
ulimit -n 200000
ulimit -u 2048
ප්ලිස්ට් ලිපිගොනු මෙන්, ඔබේ bashrc හෝ ඊට සමාන ගොනුවට -rw-r - r-- අවසර තිබිය යුතුය. මෙම අවස්ථාවෙහිදී, ඔබට ඔබේ පරිගණකය නැවත ආරම්භ කර ulimit -n ඔබේ පර්යන්තයට ඇතුළත් කළ හැකිය. ඔබේ පද්ධතිය නිවැරදිව වින්යාස කර ඇත්නම්, මැක්ස්ෆයිල් 200000 ලෙස සකසා ඇති බව ඔබ දැකගත යුතුය.
වැඩි විස්තර සඳහා ඔබට මෙම ලිපිය අනුගමනය කළ හැකිය.
https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
අගයන් .ලදායී වීමට ඔබේ මැක් නැවත ආරම්භ කිරීමට මතක තබා ගන්න.
Chmod -R කරන අතරතුර මට එය හමු විය, එබැවින් කුඩා පියවර ගැනීමෙන් මම එය වට කර ගතිමි, උදා
# for each directory
find . -type d -exec chmod 755 {} \;
මට මේ ප්රශ්නය තිබුණේ කැටලිනා ධාවනය වන 2017 මැක්බුක් එකක. ගැටළුව වූයේ Spotify (එය යාවත්කාලීනව තිබීම) සහ Spotify සැකසුම "දේශීය ගොනු පෙන්වන්න" යන්නයි.
මෙම සැකසුම Spotify හට ඔබගේ බාගැනීම් ෆෝල්ඩරය හෝ වෙනත් ෆෝල්ඩර හරහා බැලීමට ඉඩ සලසයි. යම් හේතුවක් නිසා එය ගොනු විවෘත කිරීම සහ පරීක්ෂා කිරීම සිදු කරයි. Lsof -n පරීක්ෂා කිරීම ඇත්ත වශයෙන්ම .jpg ගොනු දහස් ගණනක් ඇතුළුව ලිපිගොනු 7500 කට වඩා වැඩි විය. Spotify ඒවා වසා නොගත්තේ මන්දැයි විශ්වාස නැත, එය දෝෂයක් ලෙස පෙනේ.
මෙම සිටුවම අක්රීය කිරීම සහ Spotify නැවත ආරම්භ කිරීම ක්රියා කළ හැකිය, විකල්පයක් ලෙස අස්ථාපනය කිරීම ක්රියා කරයි.