Врло често се могу појавити грешке приликом рада на јако учитаним Линук серверима „превише отворене датотекес ". То значи да је програм отворио превише датотека (прочитајте дескрипторе датотека) и не може да отвори нове. У Линуку су ограничења„ макс. отворене датотеке “постављена према заданим поставкама за сваки процес и корисника и нису превисока.
У овом ћемо чланку погледати како провјерити тренутна ограничења броја отворених датотека, како промијенити ову поставку за цијели послужитељ, за појединачне услуге и за сесију..
Садржај:
- Грешка: Превише отворених датотека и ограничења броја отворених датотека у Линуку
- Ограничите подешавања за ограничења броја истовремено отворених датотека у Линуку
- Повећајте ограничење дескриптора отворених датотека за једну услугу
- Повећање максималног броја отворених датотека за Нгинк и Апацхе
- Ограничење највећег броја датотека за тренутну сесију
Грешка: Превише отворених датотека и ограничења броја отворених датотека у Линуку
Прво, схватимо где можемо уочити грешку „превише отворених датотека“. Најчешће се ова грешка појављује на серверима са инсталираним веб серверима НГИНКС / хттпд, сервером базе података (МиСКЛ / МариаДБ / ПостгреСКЛ), приликом читања великог броја дневника. На пример, када веб сервер Нгинк нема довољно ограничења за отварање датотека, добићете грешку:
соцкет () није успео (24: Превише отворених датотека) док се повезујете узводно
Максимални број дескриптора датотека који се могу отворити на вашем систему може се наћи на следећи начин:
# цат / проц / сис / фс / филе-мак
Ограничење броја отворених датотека за тренутног корисника је 1024. Ово можете да проверите:
# улимит -н
Постоје две врсте ограничења: Тешко и Софт. Корисник може променити ограничење за софт лимит (али мека вредност не може прећи тврду). Тврдо ограничење може се променити само као привилеговани корисник.
Да бисте приказали софт-ограничење, извршите:
# улимит -нС
Да бисте поставили тврдо ограничење:
# улимит -нХ
Ограничите подешавања за ограничења броја истовремено отворених датотека у Линуку
Да бисте свим сервисима омогућили отварање више датотека, можете променити ограничења на нивоу целог Линук оперативног система. Да би нова подешавања стално радила и не би се могла ресетовати након поновног покретања сервера или сесије, морате да поправите /етц/сецурити/лимитс.цонф датотеку. Додајте линије:
* хард нофиле 97816 * софт нофиле 97816
Ако користите Убунту, морате да напишете линију:
потребна је сесија пам_лимитс.со
Овај параметар додаје могућност учитавања ограничења током ауторизације корисника..
Након промена, поново покрените терминал и проверите граничну вредност мак_опен_филес:
[роот @ сервер ~] # улимит -н
97816
Повећајте ограничење дескриптора отворених датотека за једну услугу
Можете да промените ограничење броја дескриптора отворених датотека за одређену услугу, а не за цео систем. Узмите у обзир апацхе. Да бисте променили вредности, отворите сервисна подешавања путем системцтл: # системцтл уреди хттпд.сервице
Додајте потребна ограничења, на пример:
[Сервице] ЛимитНОФИЛЕ = 16000 ЛимитНОФИЛЕСофт = 16000
Након промене морате ажурирати конфигурацију услуге и поново је покренути:
# системцтл поновно учитавање демона
# системцтл поново покрените хттпд.сервице
Да бисте проверили да ли су се вредности промениле, морате да добијете ПИД услуге:
# статусцтл статус хттпд.сервице
На пример, дефинисали сте услугу ПИД 32724:
# мачка / проц / 32724 / ограничења | греп "Макс. отворене датотеке"
Тако сте променили Мак отворене вредности датотека за одређену услугу.
Повећање максималног броја отворених датотека за Нгинк и Апацхе
Ако промените ограничење броја отворених датотека за веб сервер, морате исправити и конфигурациону датотеку услуге. На пример, за Нгинк у конфигурацијској датотеци /етц/нгинк/нгинк.цонф, треба да региструјете / промените вредност у директиви:
Воркинг_рлимит_нофиле 16000Када конфигуришете Нгинк на тешко учитаном 8-језгреном серверу са радничким везама 8192, наведите 8192 * 2 * 8 (вЦПУ) = 131072 у радника_рлимит_нофиле.
Затим поново покрените Нгинк.
За апацхе морате да креирате директоријум:
# мкдир /либ/системд/систем/хттпд.сервице.д/
Након тога креирајте датотеку лимит_нофиле.цонф:
# нано /либ/системд/систем/хттпд.сервице.д/лимит_нофиле.цонф
И додајте му:
[Сервис] ЛимитНОФИЛЕ = 16000
Не заборавите да поново покренете хттпд услугу.
Ограничење највећег броја датотека за тренутну сесију
Да бисте променили ограничења за отворене датотеке унутар сесије вашег терминала, покрените наредбу:
# улимит -н 3000
При затварању терминала и стварању нове сесије, ограничења се враћају на почетне вредности наведене у датотеци /етц/сецурити/лимитс.цонф.
Да бисте променили укупну вредност у систему / проц / сис / фс / филе-мак, промените вредност фс.филе-мак у /етц/сисцтл.цонф:
фс.филе-мак = 100000
И примените:
# сисцтл -п
У овом смо чланку схватили како да решимо проблем са недовољним ограничењем за дескрипторе отворених датотека у Линуку и испитали смо неколико опција за промену лимита сервера.