Linux je spolehlivý a flexibilní operační systém, který se často používá v oblasti webhostingu a serverových aplikací. Ve výchozím nastavení má však Linux limit na počet otevřených souborů pro jednoho uživatele,což může vést k problémům, zejména pro aplikace, které zpracovávají velké množství dat.
V této příručce vám řekneme, jak zvýšit limit otevřených souborů v Linuxu, abyste zlepšili výkon vašich aplikací. K tomu použijeme příkazy dostupné ve většině distribucí Linuxu.
Poznámka: před provedením všech příkazů se doporučuje zálohovat váš systém nebo nastavení. Pokud si nejste jisti činností, je lepší kontaktovat správce systému nebo odborníka.
Nejprve zkontrolujeme aktuální limit otevřených souborů na vašem systému. Můžete to provést spuštěním příkazu ulimit-n v terminálu. Výsledkem bude číslo, které udává aktuální maximální limit.
Zvýšení limitu otevřených souborů
Počet otevřených souborů v operačním systému Linux může být omezen na výchozí nastavení. Uživatelé však mohou pro své úkoly potřebovat více deskriptorů souborů. V této části se podíváme na různé způsoby, jak zvýšit limit otevřených souborů v Linuxu.
-
Metoda 1: dočasná změna limitu pokud potřebujete dočasně zvýšit limit otevřených souborů, můžete použít příkaz ulimit. Chcete-li například zvýšit limit na 5 000 souborů, můžete spustit následující příkaz:
ulimit -n 5000
username soft nofile 5000username hard nofile 5000
* soft nofile 5000* hard nofile 5000
V souboru common-session přidejte následující řádek:
session required pam_limits.so
Po provedení změn možná budete muset restartovat systém nebo relaci uživatele, aby se změny projevily. Aktuální limit otevřených souborů můžete zkontrolovat pomocí příkazu ulimit-n.
Zvýšení limitu otevřených souborů může být užitečné v mnoha scénářích, jako je zpracování velkého množství dat nebo provádění distribuovaných úkolů. Při změně těchto nastavení buďte opatrní a zvažte zdroje vašeho systému.
Kontrola aktuálního limitu
Než přejdeme ke zvýšení limitu otevřených souborů, musíme zjistit aktuální hodnotu tohoto limitu. K tomu lze využít příkaz ulimit -n. Tento příkaz zobrazí aktuální počet povolených otevřených souborů pro daného uživatele.
Chcete-li zkontrolovat aktuální limit, jednoduše otevřete terminál a zadejte příkaz ulimit -n. Výsledkem bude číslo, které označuje aktuální limit otevřených souborů pro vašeho uživatele.
Je důležité poznamenat, že někteří uživatelé mohou narazit na omezení, při kterém příkaz ulimit -n nezobrazuje hodnotu. V takovém případě můžete použít příkaz ulimit -nH Chcete-li odvodit hodnotu horního limitu pro aktuálního uživatele.
Nyní, když známe aktuální limit, jsme připraveni přistoupit ke zvýšení jeho hodnoty.
Změna limitu na úrovni uživatele
Chcete-li změnit limit počtu otevřených souborů na úrovni uživatele v Linuxu, musíte provést následující kroky:
- Otevřete terminál.
- Zadejte příkaz ulimit-n pro kontrolu aktuální hodnoty limitu.
- Pokud současná hodnota nestačí k uspokojení vašich potřeb, proveďte příkaz ulimit-n [nové označení] , kde [nové označení] - požadovaný počet otevřených souborů.
- Zkontrolujte novou hodnotu limitu provedením příkazu ulimit-n znovu.
- Aby se změny projevily pro vaši aktuální relaci, musíte restartovat terminál nebo spustit příkaz source ~/.bashrc .
Upozorňujeme, že změna limitu na úrovni uživatele bude fungovat pouze v rámci vaší aktuální relace. Chcete-li změnit limit pro všechny uživatele systému, změňte konfigurační soubor /etc/security/limits.conf .
Změna limitu na úrovni systému
Změna limitu na úrovni systému umožňuje zvýšit maximální počet otevřených souborů pro všechny uživatele. To by vyžadovalo práva superuživatele.
1. Otevřete terminál konzoly a zadejte následující příkaz:
sudo vi /etc/security/limits.conf
2. Chcete-li nastavit nový limit, přidejte na konec souboru následující řádky:
Všimněte si, že hodnota 50 000 je příkladem a lze ji změnit podle vašich požadavků.
3. Uložte a zavřete soubor, stiskněte klávesu Esc, poté zadejte :wq a stiskněte klávesu Enter.
4. Restartujte počítač, aby se změny projevily.
Systém nyní použije nový limit pro počet otevřených souborů pro všechny uživatele. Aktuální limit můžete zkontrolovat pomocí příkazu ulimit-n .
Změna limitu pro konkrétní proces
V Linuxu existuje možnost změnit limit otevřených souborů pro konkrétní proces. K tomu lze použít příkaz prlimit .
Chcete-li změnit limit otevřených souborů pro proces s určitým identifikátorem (PID), spusťte následující příkaz:
prlimit --pid --nofile=
Zde je identifikátor procesu a nová hodnota limitu otevřených souborů.
Pokud například chcete nastavit limit otevřených souborů na 500 pro proces s ID 1234, spusťte následující příkaz:
prlimit --pid 1234 --nofile=500
Po provedení příkazu se limit otevřených souborů pro daný proces změní.
Restart systému s novým limitem
Po provedení změn v souboru / etc / security / limits.conf musí restartovat systém, aby vstoupily v platnost nové hodnoty limitů.
Restartování systému se provádí pomocí příkazu reboot nebo shutdown-r now . Je však třeba vzít v úvahu, že k provádění těchto příkazů jsou vyžadována práva superuživatele (root), takže budete muset zadat heslo během provádění příkazu.
Po provedení příkazu se systém vypne a automaticky se restartuje s novým limitem počtu otevřených souborů.
Sledování používání otevřených souborů
Když narazíte na problém s omezením počtu otevřených souborů v Linuxu, může být užitečné vědět, jak sledovat používání otevřených souborů k identifikaci problematických procesů nebo aplikací. V Linuxu existuje několik nástrojů, které vám v tom pomohou.
1. lsof: Je to univerzální nástroj, který vám umožňuje sledovat otevřené soubory na vašem systému. Tento příkaz můžete použít k výstupu seznamu všech otevřených souborů nebo k filtrování výsledků podle konkrétního procesu nebo souboru.
2. fuser: Tento příkaz umožňuje definovat procesy, které používají konkrétní soubor nebo souborový systém. Tento příkaz můžete použít k určení, které procesy mohou být příčinou omezení otevřených souborů.
3. procfs: Linux má speciální souborový systém zvaný procfs, který poskytuje informace o aktuálním stavu systému, včetně seznamu otevřených souborů každého procesu. K těmto datům můžete přistupovat procházením souborů v adresáři / proc . Soubor /proc/PID/fd/ vám například umožňuje zobrazit otevřené deskriptory souborů pro proces se zadaným identifikátorem.
4. sysctl: Je to nástroj, který vám umožňuje měnit různé systémové parametry linuxového jádra. Tento příkaz můžete použít k nastavení omezení počtu otevřených souborů.
Při používání těchto nástrojů dávejte pozor, abyste neporušili svůj systém. Mějte na paměti, že počet otevřených souborů může být omezen na systémové prostředky a jeho změna může vyžadovat zvýšení oprávnění.