Автор Гілка: -bash: fork: Cannot allocate memory  (Прочитано 3298 раз)

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Привіт..
маю таку проблемку..  є убунту-сервер

cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

і часто при виконанні будь-яких !!! (ls, mc, find .... ) команд в шелі отримую

-bash: fork: Cannot allocate memory
замітив, що таке майже 100% виникає коли виконуєтья крон

# cat /etc/cron.d/php5
# /etc/cron.d/php5: crontab fragment for php5
#  This purges session files older than X, where X is defined in seconds
#  as the largest value of session.gc_maxlifetime from all your php.ini
#  files, or 24 minutes if not defined.  See /usr/lib/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete

дуже багато процесі fuser ...


питання скоріше не про крон і що за процеси і нашо (це я ніби знаю майже) .. а звідки це повідомлення

-bash: fork: Cannot allocate memory

памяті вільної "море"

# free
             total       used       free     shared    buffers     cached
Mem:      16465180   12407568    4057612          0     730160    6870848
-/+ buffers/cache:    4806560   11658620
Swap:     16773116     324680   16448436

це напевно якийсь ліміт загальної к-ті процесів ... але поки не знайшов який і де і як він визначається..

Підкажіть, бдіь ласка, ?

Відсутній ANGR

  • Новачок
  • *
  • дописів: 12
  • Карма: +0/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #1 : 2012-04-26 12:27:33 »
Привіт.

Це фізична машинка чи VPS? Якщо VPS, то яка система віртуалізації, що кажуть команди:
uname -a
cat /proc/user_beancounters

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #2 : 2012-04-26 12:28:46 »
Цитата
Це фізична машинка чи VPS? Якщо VPS

забув дописати..
якраз це фізична машина !

Відсутній Дмитро Редчук

  • Кореспондент
  • ***
  • дописів: 104
  • Карма: +0/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #3 : 2012-04-26 14:18:43 »
це напевно якийсь ліміт загальної к-ті процесів ... але поки не знайшов який і де і як він визначається..

Підкажіть, бдіь ласка, ?

Я би ґуґлив десь тут:

$ cat /proc/sys/fs/file-nr
10336      0      392345

$ cat /proc/sys/fs/file-max
392345

$ cat /proc/sys/fs/nr_open
1048576
«Критика має бути конструктивною. Інакше вона деструктивна» ©
Щось не так? — Зроби так.

Відсутній Re.

  • Загальний модератор
  • Літератор
  • *****
  • дописів: 1898
  • Карма: +1/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #4 : 2012-04-26 14:25:47 »
cat /proc/user_beancounters вам у поміч.
Може бути, що використовується лише одне ядро в багатоядерному процесорі.
« Змінено: 2012-04-26 14:26:21 від Re. »

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #5 : 2012-04-26 14:30:38 »
Цитата
cat /proc/user_beancounters вам у поміч.
так нема такого !

Відсутній Дмитро Редчук

  • Кореспондент
  • ***
  • дописів: 104
  • Карма: +0/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #6 : 2012-04-26 14:39:24 »
... find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete
До речі, якщо Ви заберете у find’а -execdir-delete) і кинете результат на xargs... а тому скажете брати по n рядків і віддавати якомусь певному скриптові, а в тому скрипті зро́бите обмеження на кількість процесів... тобто, спати, доки процесів fuser не стане менше заданого m, наприклад...

Не знаю, не пробував .)
«Критика має бути конструктивною. Інакше вона деструктивна» ©
Щось не так? — Зроби так.

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #7 : 2012-04-26 14:41:28 »
стосовно /proc/sys/fs/file-nr (е-сть відритих файлів) - то  там ще далеко до /proc/sys/fs/file-max  (макс. к-ті відритих файлів) в той момент ...

а /proc/sys/fs/nr_open  - треба дивитися.. ( lsof-ом ? )

поки що викинув той fuser з "команди"... щоб не гальмувало .. бо з ним к-сть процесів в  системі (pw waux| wc -l ) скаче до 30000 !!

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #8 : 2012-04-26 14:47:21 »
Цитата
До речі, якщо Ви заберете у find’а -execdir (і -delete) і кинете результат на xargs... а тому скажете брати по n рядків і віддавати якомусь певному скриптові, а в тому скрипті зро́бите обмеження на кількість процесів... тобто, спати, доки процесів fuser не стане менше заданого m, наприклад...

ух.. такого я ще не вмію ..

як написав вище - викинув його взагалі .. ( може не зашкодить )

Відсутній Дмитро Редчук

  • Кореспондент
  • ***
  • дописів: 104
  • Карма: +0/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #9 : 2012-04-26 15:41:57 »
к-сть процесів в  системі (pw waux| wc -l ) скаче до 30000 !!

$ cat /proc/sys/kernel/pid_max
32768
$ cat /proc/sys/kernel/threads-max
62077
Якщо сервер потягне, можна збільшити.

Тобто, Вам треба або збільшити ліміти, або обмежувати (регулювати) кількість тих fuser.
« Змінено: 2012-04-26 15:45:04 від dor »
«Критика має бути конструктивною. Інакше вона деструктивна» ©
Щось не так? — Зроби так.

Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #10 : 2012-04-26 16:00:30 »
Цитата
Тобто, Вам треба або збільшити ліміти

я про це і догадувався.. але знав які саме ліміти взагалі існують..

а  виявляється тих лімітів в лінуксі досить багато, про існування всіх їх я не знаю, на жаль... та й ніяких помилок який саме ліміт перевищив нема ніде !
майже пальцем в небо тикати приходиться (мені так здається)

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
Re: -bash: fork: Cannot allocate memory
« Відповідей #11 : 2012-04-27 11:20:40 »
а яка версія пакету psmisc ? часом не 22.14-1 ?

$ dpkg -l psmisc

в цій версії, кажуть, є глюк пов'язаний з fuser. зокрема "fuser -s" може змінювати exit code при знаходженні об'єктів.

Крім цього, 11.10 це перший реліз в якому /etc/cron.d/php5  почав додатково використовувати fuser для перевірки сесійних файлів PHP.


Я б не заморочувався з лімітами, а просто повернувся до попереднього варіанту (11.04 cron job) який працював роками:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete


Відсутній Volodymyrko

  • Графоман
  • ****
  • дописів: 370
  • Карма: +0/-0
  • I Like FreeBSD !
Re: -bash: fork: Cannot allocate memory
« Відповідей #12 : 2012-04-27 11:30:39 »
Цитата
а яка версія пакету psmisc ? часом не 22.14-1 ?
та сама..


Цитата
Я б не заморочувався з лімітами, а просто повернувся до попереднього варіанту (11.04 cron job) який працював роками:
я так і зробив .. ще вчора.