Skip to content


tinyproxy: Could not allocate memory for child counting

tinyproxy - это маленький и не требовательный к ресурсам HTTP/SSL-прокси-сервер. Его целесообразно применять там, где не хочется ставить что-то более навороченное, типа squid-а.

Заметил я однажды на одном из серверов, что tinyproxy не взлетает, ругаясь в свой лог-файл /var/log/tinyproxy/tinyproxy.log таким вот образом:

  1. INFO   Feb 16 10:40:57 [25015]: Now running as group "tinyproxy".
  2. INFO   Feb 16 10:40:57 [25015]: Now running as user "tinyproxy".
  3. ERROR  Feb 16 10:40:57 [25015]: Could not allocate memory for child counting.

Само собой, сразу полез проверять что с памятью, но свободной памяти оказалось предостаточно. На всякий случай остановил даже тяжелые по памяти процессы, съедающие обычно по нескольку гигабайт RSS --- безрезультатно, ошибка никуда не делась.

Запустив tinyproxy через strace, я увидел следующее:

  1. munmap(0x2b2ae6a30000, 4096)            = 0
  2. umask(0177)                             = 0177
  3. gettimeofday({1329484731, 868249}, NULL) = 0
  4. getpid()                                = 13041
  5. open("/tmp/tinyproxy.shared.P0QttN", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
  6. unlink("/tmp/tinyproxy.shared.P0QttN")  = 0
  7. ftruncate(3, 40)                        = 0
  8. mmap(NULL, 40, PROT_READ|PROT_WRITE, MAP_SHARED, 3, 0) = 0x2b2ae6a30000
  9. clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b2ae6a3ce40) = 13042
  10. --- SIGCHLD (Child exited) @ 0 (0) ---
  11. exit_group(0)                           = ?

Эта попытка создать файл в директории /tmp навела меня на мысль проверить права доступа к ней. Оказалось, что права там нестандартные:

  1. [avz@ds1 /tmp]# ls -ld /tmp
  2. lrwxrwxrwx 1 root root 24 Апр 10  2009 /tmp -> /mnt/disk2/tmp/
  3. [avz@ds1 /tmp]# ls -ld /mnt/disk2/tmp
  4. drwxrwxr-x 4 root www 4096 Фев 17 13:18 /mnt/disk2/tmp/

Как видно, отсутствует права на запись для пользователей, не входящих в группу www. А сам tinyproxy как раз должен работать от имени пользователя tinyproxy, который в группу www не входит. После комнады chmod o+w /mnt/disk2/tmp tinyproxy успешно запустился :)

Конструкторы lego star wars kids-eshop.ru. .

Размещено в категории *nix. Теги: .

Комментариев: 2

Чтобы быть всегда в курсе здесь происходящего, Вы можете подписаться на RSS feed для комментариев на эту заметку.

  1. Поставил я этот tinyproxy, а он вообще тупо не запускается. И что с ним делать? strace тоже ситуацию не прояснил.

  2. Капец. То ли инит-скрипт писал какой-то дятел, то ли rpm-ку tinyproxy-1.8.2-1.el5.rf.i386 из репы rpmforge собирал какой-то ламер криворукий.

    Что пришлось допилить:
    1) вручную создать директорию для логов (вычитал в messages):
    mkdir /var/log/tinyproxy ; chown tinyproxy /var/log/tinyproxy
    2) в инит-скрипте /etc/init.d.tinyproxy заменить строку DAEMON="/usr/bin/tinyproxy" на DAEMON="/usr/sbin/tinyproxy"
    3) переместить конфиг-файл /etc/tinyproxy.conf в /etc/tinyproxy/tinyproxy.conf
    4) создать диру для pid-файла и поправить:
    mkdir /var/run/tinyproxy ; chown tinyproxy /var/run/tinyproxy

Some HTML is OK

(required)

(required, but never shared)

, или ответить через trackback.

Страница 1 из 11