Potrzebuję, aby mysql używał dużych stron, aby ustawić ulimit - zrobiłem to w limit.conf. Jednak limit.conf (pam_limits.so) nie jest wczytywany dla init, tylko dla „prawdziwych” powłok. Rozwiązałem to wcześniej, dodając „ulimit -l” do funkcji uruchamiania initscript. Potrzebuję jakiegoś powtarzalnego sposobu, aby to zrobić, teraz, gdy pudełka są zarządzane z szefem kuchni i nie chcemy przejmować pliku, który faktycznie jest własnością RPM.
18
Odpowiedzi:
4 kroki mogą natychmiast zmienić limity systemu i mogą nadal działać po ponownym uruchomieniu. Możesz zmienić liczbę „102400” na liczbę maksymalnych otwartych plików w systemie Linux, jak chcesz. i
aby załadować ustawienia sysctl z określonego pliku lub /etc/sysctl.conf, jeśli nie podano.
źródło
*
nie działa dlaroot
użytkownika, musiszroot
jawnie określić .../etc/sysctl.conf powinien mieć możliwość ustawienia pozycji ulimits. Nie byłem w stanie przetestować tego dobrze, ale z ankiety wynika, że powinieneś być w stanie zatrzymać się po ustawieniu w sysctl.conf.
Znalazłem różne tematy, które pokazują, że wciąż jest to problem, a wraz z zespołem omawialiśmy niektóre opcje wokół tego problemu, znaleźliśmy dwa potencjalne obejścia.
Opcja 1: Większość skryptów źródłowych rhel /etc/init.d/functions, możesz zmienić tam ustawienia ulimit
Opcja 2: init twierdzi, że / etc / initscript jest pozyskiwany za każdym razem, zanim init spawnuje cokolwiek zobacz: http://linux.die.net/man/5/initscript . Co ciekawe, mówią, że ludzie mogą ustawić ulimit =)
źródło
Samodzielny fragment przepisu na podstawie tego adresu URL:
Fragment przepisu:
źródło
Moim rozwiązaniem było po prostu zrobienie tego w naszym przepisie na szefa kuchni:
Powoduje to
ulimit -l
ustawienie wszystkich skryptów skryptowych, co może być niepożądane w niektórych środowiskach, ale dla mnie jest w porządku.W idealnym świecie zaktualizowałbym RPM, aby zawierał a
/etc/sysconfig/mysqld
, i umieściłbym tam to samo polecenie ulimit -l.źródło
Nie jestem pewien, czy jest to specyficzne dla dystrybucji, ale właśnie wprowadziłem zwiększenie limitu bezpieczeństwa, używając
/etc/security/limits.d/20-somefile.conf
w Ubuntu.Zamiast modyfikować istniejący plik, mam szablon ERB w mojej książce kucharskiej, ustawiam domyślne atrybuty w pliku atrybutów, a następnie nie muszę się martwić o użycie bloków ruby z elementami „insert_line_if_no_match” - wydaje się to nieco bardziej skomplikowane i przepis jest trochę bardziej czytelny:
i to jest mój plik szablonu:
źródło
według strony podręcznika ulimit jest przestarzałe. Musisz użyć setrlimit. Problem polega na tym, że jest to wywołanie systemowe zamiast polecenia bash.
Miałem ten problem z przełożonym i właśnie to się dowiedziałem. Jeśli proces nie ma pliku konfiguracyjnego, który pozwala na wywołanie wywołania systemowego setrlimit (). Ustaw za pomocą ulimit w skrypcie bash /etc/init.d. To skrypt usługi, który rozpoczyna proces.
Jeśli proces ma plik konfiguracyjny, na przykład superwizor d, możesz użyć tego pliku konfiguracyjnego, aby ustawić liczbę plików i zlecić procesowi bezpośrednie wywołanie setrlimits ().
Opiekun: http://supervisord.org/configuration.html#supervisord-section-settings
TomcaT: http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/
źródło
Sposób RedHat, jak opisano w artykule 253043 (wymagana subskrypcja), polega na dodawaniu odpowiednich instrukcji ulimit
/etc/sysconfig/<service name>
. Na przykład:(Użyj istniejącego pliku dla swojej usługi zamiast myServiceName.)
W przypadku demonów, które uruchamiają się bez użycia skryptu „sysconfig” RedHata, należy dodać odpowiednie wiersze ulimit do skryptu uruchamiania demona.
źródło
Spróbuj skonfigurować to w pliku /etc/sysctl.conf
źródło
Napisałem prywatną książkę kucharską, która służy nam do ustawiania ulimit i działa całkiem dobrze. W przypadku Ubuntu stwierdziliśmy, że jeśli potrzebujesz globalnego ustawienia ulimit, wymagana jest następująca sztuczka:
Dodaj następujące elementy do wspólnej sesji:
i w limit.conf musisz mieć następujące elementy:
Część główna jest ważna, ponieważ wydaje się bez niej, że niektóre skrypty inicjujące nie będą działać poprawnie. Mamy więc książkę kucharską, która konfiguruje poniższe i działa świetnie.
Inną opcją, której używaliśmy dla Tomcat, było wdrożenie Tomcata, a następnie zastąpienie skryptu init niestandardową opcją, dla której ustawiamy ulimit i restartujemy tomcat. Działa to świetnie, ale jest nieco bardziej hackerskie niż pierwsze.
Mam nadzieję, że ta pomoc, a może kiedyś uda mi się otworzyć książkę kucharską, którą mamy wewnętrznie, ponieważ jest dość prosta, ale może być pomocna dla innych, takich jak ty.
źródło