Я недавно установил exim
версия 4.86.1 работает как Cygwin
сервис в Windows Server 2008 R2. Если я отправляю по одному электронному письму за раз, все работает нормально. Однако, если я попытаюсь отправить 10 писем, каждое сразу за другим, используя сценарий, возможно, будет работать только одно или два письма. Добавление 5-секундной паузы между электронными письмами также работает.
в exim_panic.log
файл, каждый сбой происходит из-за ошибки следующего типа:
2016-06-07 04:09:00 O8DPZ0-000708-7G Cannot lock /var/spool/exim/input/0/O8DPZ0-000708-7G-D (11): Resource temporarily unavailable
Между тем /var/spool/exim/input
каталог содержит группу файлов нулевого размера с именами, соответствующими названию в сообщении об ошибке выше (т. е. O8DPZ0-000708-7G-D
). Эти сообщения не находятся в очереди, поскольку exim -bpc
возвращает ноль, и exim не пытается повторно отправить электронные письма.
В Resource temporarily unavailable
ошибка обычно означает, что вы достигли предела ресурсов системы или процесса, такого как доступная память, количество разрешенных пользовательских процессов, количество файлов, которые пользователь может открыть одновременно. Вы можете получить эту ошибку при запуске нового процесса, открытии нового файла или когда текущий процесс запрашивает у ядра дополнительную память.
Некоторые из этих ограничений являются пользовательскими, которые можно установить с помощью ulimit
команда. Запуск ulimit -a
команда покажет, какие ограничения для пользователей в настоящее время установлены, например,
$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 2036
cpu time (seconds, -t) unlimited
max user processes (-u) 256
virtual memory (kbytes, -v) unlimited
Судя по сообщению об ошибке, ваша проблема может быть связана с нехваткой файловых дескрипторов. Возможно, стоит проверить, какие дескрипторы файлов открыты, запустив
ls -l /proc/<PID>/fd
Подобные проблемы также могут быть вызваны одним из Большой список хитрых приложений (список приложений, которые мешают нормальной работе Cygwin, интрузивно внедряясь в цепочку системных вызовов).
Я никогда не использовал Exim, поэтому я не знаю, порождает ли он много дочерних процессов во время работы, но сбои Fork также могут быть проблемой; они задокументированы в FAQ Cygwin: Как мне исправить fork()
неудачи?. Иногда установленные библиотеки не обновляются должным образом, и их необходимо обновить с помощью Cygwin. setup.exe
, или запустив rebaseall
. Видеть
Наконец, я получал много Resource temporarily unavailable
сообщения, когда я запускал 32-битный Cygwin. После обновления до 64-разрядной версии они в основном исчезли.