Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam.
Posiadam serwer dedykowany z systemem Linux Debian 6.0 (64bit).
Mam problem z ustawieniem limitu otwartych deskryptorów. Koniecznie muszę zwiększyć tę wartość, gdyż moje pewne oprogramowanie tego wymaga.
Oprogramowanie nie jest uruchamiane przez użytkownika root, a innego dodanego do systemu.
Ustawiłem w /etc/security/limits.conf:
* hard nofile 10240 * soft nofile 10240
Zrestartowałem serwer, i problem występuje nadal (program nie działa poprawnie), ustawiłem za małe wartości, czy jeszcze muszę dodać do /etc/sysctl.conf, np. taki wpis?:
fs.file-max = 4827068
Domyślna wartość to:
sysctl fs.file-max fs.file-max = 2413534
Dlatego postanowiłem ją pomnożyć x2.
Dodatkowo komenda: ulimit -a pokazuje zarówno dla użytkownika root jak i tego który uruchamia aplikację (oczywiście po restarcie serwera jak i przed):
open files (-n) 1024
Zgodnie z man pam_limits - sprawdziłem plik /etc/pam.d/login, i jest już tam aktywne (od komentowane): session required pam_limits.so
Nie rozumiem co tutaj jest już źle zrobione. Męczę się z tym od trzech dni i nic. :(
Bardzo liczę na Waszą pomoc. Pozdrawiam!
Offline
Co do roota: "group and wildcard limits are not applied to the root user. To set a limit for the root user, this field must contain the literal username root." (żródło: man limits.conf). Więcej nie pomogę, nie mam debiana 6.
Offline
Dla root nie chcę ustawiać, tylko dla dodanego użytkownika już, a najlepiej wszystkich tak jak to robię za pomocą: * w limits.conf
Bardzo proszę o pomoc jeżeli ktoś ma jakiś pomysł.
Ostatnio edytowany przez desavil (2012-01-26 21:09:47)
Offline
oprocz ustawienia w /etc/security/limits.conf musisz (w kazdym shelu usera) dawac ulimit -n 10240 ... polecam wpisac w jakis /etc/profile lub cos w tym stylu
Offline
No nic, ustawiłem w /etc/sysctl.conf
fs.file-max = 4827068
W /etc/security/limits.conf, również opcje takie jak podałem wyżej, zrestartowałem serwer i nic nadal to samo, oprogramowanie nie działa poprawnie.
bercik, stworzyłem plik w katalogu domowym użytkownika o nazwie: .bash_profile i umieściłem tam:
ulimit -n 10240
Wieczorem zrestartuję serwer i zobaczę, czy coś to da, bo widzę, że nic z tego nie będzie... a ja ciągle resetuje serwer. :(
A to na pewno da się jakoś ustawić.
Ostatnio edytowany przez desavil (2012-01-27 20:20:03)
Offline
Wystarczy się przelogować lub zrestartować skrypt startujący twój soft (zależnie jak to odpalasz), nie musisz restartować serwera. Jeśli to skrypt to pewnie lepiej to dopisać do .bashrc. Plik .bash_profile jest wykonywany tylko po zalogowaniu.
Offline
To jest program, uruchamiany z poziomu PHP za pomocą funkcji system().
A komenda startowa wygląda, w ten sposób:
/home/user/files/program /home/user/files/config.conf > /dev/null &
Ostatnio edytowany przez desavil (2012-01-27 20:12:32)
Offline
No niestety nadal nie działa :(
Wszystkie opcje ustawione, limits.conf, sysctl.conf, .bash_profile, .bashrc
Z tymże pliki .bashrc oraz .bash_profile stworzyłem, oczywiście właściciel i grupa usera jest nadana ich zawartość to tylko: ulimit -n 10240
Co jeszcze mogę zrobić?
PS. Serwer był restartowany.
Potrzebuję tego do: http://forums.winamp.com/showthread.php?s=&thre … hlight=ulimit
http://wamp-forums-dtc-a.evip.aol.com/showthread.php?p=2831040
Offline
sprawdz z palca jak dasz ulimit -n 10240
to jaki bedzie efekt (i co wypisze ulimit odnosnie tego limitu)
Edit/PS - zadna z tych zmian nie wymaga restartowania systemu - limity sysfs ustawia sie w proc na dzialajacym systemie limity w limit.conf i ustawienia w profile, itp wymagaja przelogowania odpowiedniego usera ...
Offline
takie szybkie pytanko ;)
Jak masz skonfigurowane php ? z jakim userem/grupą działa ?
Bo mam dziwne przeczucie ;)
Offline
sprawdz z palca jak dasz ulimit -n 10240
to jaki bedzie efekt (i co wypisze ulimit odnosnie tego limitu)
Sprawdzałem niejednokrotnie, wartość się zmienia, ale oprogramowanie nadal nie działa poprawnie.
Dopuszcza maksymalnie 1010 słuchaczy, w tej ilości jak już jest strona serwera ShoutCast zaczyna się długo ładować.
User/grupa: hosting/hosting
PS.
uname -a Linux XXX 2.6.38.2-grsec-xxxx-grs-ipv6-64 #2 SMP Thu Aug 25 16:40:22 UTC 2011 x86_64 GNU/Linux
Ostatnio edytowany przez desavil (2012-01-30 19:51:34)
Offline
A Grsecurity nie miesza?
Bo sam Grsecurity ma wbudowane limity, włącz sobie w sysctl szczegółowe logowanie grsec, i zobacz, co tam w logach siedzi.
Samo logowanie grsec w rsyslogu, do odrębnych plikow, załatwiłem tak:
:msg, contains, "grsec" /var/log/grsec/grsec.log :msg, contains, "grsec" ~ :msg, contains, "pax" /var/log/grsec/pax.log :msg, contains, "pax" ~
Poza tym, co tam jest za oprogramowanie?
Bo jeśli coś związanego z javą czy np jbossem, to grsec może nieźle namieszać.
Pax też jest pod tym względem dość "mięsożerny".
Sam Debian co prawda potrafi działać z Grsecurity/Paxem, ale systemem przystosowanym do pracy z tym modułem bym go nie nazwał.
I spróbuj na jaju bez grseca.
Wtedy przynajmniej poznasz w jakimś stopniu prawdopodobną przyczynę kłopotów.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2012-01-30 20:08:21)
Offline
Jacekalex,
Umieściłem to na końcu pliku: /etc/rsyslog.conf
Zresetowałem rsyslog: /etc/init.d/rsyslog restart
A w stworzonych plikach z logami pusto.
PS. W: /var/log/kern.log mam dużo wpisów typu:
Jan 30 20:32:28 XXX kernel: TCP: Peer XXX.XXX.XXX.XXX:62207/7788 unexpectedly shrunk window 3819871628:3819873809 (repaired) Jan 30 20:32:30 XXX kernel: TCP: Peer XXX.XXX.XXX.XXX:62207/7788 unexpectedly shrunk window 3819871628:3819873809 (repaired) Jan 30 20:32:32 XXX kernel: TCP: Peer XXX.XXX.XXX.XXX:62207/7788 unexpectedly shrunk window 3819871628:3819873809 (repaired)
Ostatnio edytowany przez desavil (2012-01-30 20:35:04)
Offline
Karnel zmieniony na bez grs, ulimit pokazuje nadal 1024 open files, a oprogramowanie nie dziala poprawnie .
Offline
skoro z palca chodzi ... a w php nie to z sproboj z system wywolac skrypt shellowy robiacy ulimit i wlaczajacy program ...
Offline
desavil napisał(-a):
Jacekalex,
Umieściłem to na końcu pliku: /etc/rsyslog.conf
Zresetowałem rsyslog: /etc/init.d/rsyslog restart
A w stworzonych plikach z logami pusto.
Mój obecny rsyslog.conf
Za to logowanie Grsecurity włącza sie przez sysctl, pod warunkiem, że masz włączone odpowiednie opcje w kernelu.
zgrep -i grker /proc/config.gz | egrep -i 'audit|log' CONFIG_GRKERNSEC_AUDIT_GROUP=y CONFIG_GRKERNSEC_AUDIT_GID=1000 CONFIG_GRKERNSEC_EXECLOG=y CONFIG_GRKERNSEC_RESLOG=y CONFIG_GRKERNSEC_CHROOT_EXECLOG=y CONFIG_GRKERNSEC_AUDIT_PTRACE=y CONFIG_GRKERNSEC_AUDIT_CHDIR=y CONFIG_GRKERNSEC_AUDIT_MOUNT=y CONFIG_GRKERNSEC_RWXMAP_LOG=y CONFIG_GRKERNSEC_AUDIT_TEXTREL=y
sysctl -a |egrep -i 'grsec|pax' | egrep -i 'audit|log' kernel.grsecurity.exec_logging = 0 kernel.grsecurity.rwxmap_logging = 1 kernel.grsecurity.signal_logging = 1 kernel.grsecurity.forkfail_logging = 1 kernel.grsecurity.timechange_logging = 0 kernel.grsecurity.chroot_execlog = 0 kernel.grsecurity.audit_group = 1 kernel.grsecurity.audit_gid = 1000 kernel.grsecurity.audit_chdir = 0 kernel.grsecurity.audit_mount = 0 kernel.grsecurity.audit_textrel = 1 kernel.grsecurity.resource_logging = 0 kernel.grsecurity.audit_ptrace = 1
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2012-02-01 13:57:49)
Offline
bercik, to czy usługa jest uruchamiana z poziomu PHP, czy tez nie to niema konkretnego znaczenia.
To tylko inny użytkownik ją uruchamia, a nawet jak wyłączę PHP, czy tez samo apache usługa działa nadal.
Co z tego, że piszę z palca ulimit -n 10240 jak po wylogowaniu z SSH limit ustawia się znów na domyślny.
PS. Teraz cały czas jak zalecaliście korzystam z karnela bez grs:
uname -a Linux XXX 2.6.38.2-xxxx-std-ipv6-64 #2 SMP Thu Aug 25 16:43:23 UTC 2011 x86_64 GNU/Linux
Macie jeszcze jakieś pomysły co tutaj ustawić, bo nic nie chce działać :(
Ostatnio edytowany przez desavil (2012-02-01 17:55:54)
Offline
Pomoże ktoś, bardzo mi zależy na rozwiązaniu tego problemu.
Offline
@desavil:
1. ulimit ustawia limit w danej powloce i ten limit jest dziedziczony przez procesy potomne ... wiec aby program X mial zwiekszony limit w powloce z ktorej jest odpalony musi byc wykonany stosowny ulimit ...
2. aby po zalogowaniu sie przez ssh byl z automatu ustawiony odpowiedni ulimit to komenda tas musi byc w plikah wykonywanych w trakcie uruchamiania sesji ...
3. napisz konkretnie z czym jest problem (jaki to program itd) bo moze nie chodzi o ulimit
Offline
bercik,
1. Ustawiłem ulimit z palca w konsoli na zalogowanym userze na którym działa aplikacja, ulmit -a pokazuje zmienioną wartość, tak samo jak w tej konsoli uruchamiam aplikację lecz aplikacja i tak nie działa poprawnie.
2. Wyżej napisałem już co zawierają moje pliki .bash_profile, .bashrc
3. Program to serwer streamingu ShoutCast. Każdy słuchacz radia to potomny proces serwera ShoutCast.
Nawet jeżeli ustawię maksymalną ilość slotów (słuchaczy) serwera ShoutCast, np. 2000 może on mieć i tak 1010 słuchaczy maksymalnie, tyle obsłuży więcej nie będzie mogło gdyż nie może utworzyć większej liczby procesów potomnych potrzebnych do obsłużenia tego.
Problemy te są również opisane na forum twórcy tego oprogramowania - nullsoft, winamp:
http://forums.winamp.com/showthread.php?s=&threadid=278235
http://wamp-forums-dtc-a.evip.aol.com/showthread.php?p=2831040
Offline
A może jemu się nie rozbija o liczę otwartych plików tylko dodatkowo o liczbę procesów?
Pokaż co daje
ulimit -a
oraz
ps -uUSER -L|wc -l
Offline
ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) unlimited virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
ps -uhosting -L|wc -l 3082
PS. Teraz na tym serwerze jednym ShoutCast jest ok. 810 słuchaczy + inne serwery to będzie w sumie ok. 1500 słuchaczy z wszystkich serwerów ShoutCast łącznie.
Ostatnio edytowany przez desavil (2012-02-02 14:45:43)
Offline
polecenie wydałeś z usera z którego działa shout?
Offline
Tak, teraz jest np.
ps -uhosting -L|wc -l 3101
A na tym jednym serwerze ShoutCast 900 słuchaczy, nie licząc pozostałych.
PS. Wszystkie są uruchomione na tym samym userze.
Ostatnio edytowany przez desavil (2012-02-02 15:11:37)
Offline
Spróbuj dodać ulimit {opcje} do polecenia odpalającego shoutcasta, lub skryptu w /etc/init.d, który go uruchamia, przed poleceniem uruchamiającym shoutcasta.
Poza tym, jeśli chcesz używać grsec, to radziłbym zainteresować się Icecastem.
http://pl.wikipedia.org/wiki/Icecast
Edyta:
To jest program, uruchamiany z poziomu PHP za pomocą funkcji system().
To moze zastosuj ulimit nie dla shoutcasta, ale dla procesu php czy serwera, dla apacha - apache, dla php-fpm - php-fpm.
1. ulimit ustawia limit w danej powloce i ten limit jest dziedziczony przez procesy potomne ... wiec aby program X mial zwiekszony limit w powloce z ktorej jest odpalony musi byc wykonany stosowny ulimit ..
Bo jeśli limit jest dziedziczony przez procesy potomne, to na 99% domyślny limit jest dziedziczony z "góry", i żadne kombinacje z konsolą nic tu nie poradzą.
Ostatnio edytowany przez Jacekalex (2012-02-02 18:20:08)
Offline