Мой процесс-демон уничтожается почти сразу, как только начинает получать запросы. В журнале приложения нет абсолютно никаких сообщений об ошибках, даже когда я пытаюсь запустить его на переднем плане.
У меня есть подозрение, что ОС может убивать его для OOM, потому что для этого экземпляра виртуальной машины выделено только 512 МБ.
Я хотел бы выяснить, что вызывает это, но меня ставит в тупик тот факт, что файлов журналов очень мало:
# ls -la /var/log
total 20011
drwxr-xr-x 3 root sys 10 Oct 9 02:38 .
drwxr-xr-x 31 root root 31 May 15 2013 ..
-rw-r----- 1 root root 4914932 Nov 15 16:34 auth.log
-rw-r--r-- 1 root root 0 Sep 9 15:49 courier.log
drwxr-xr-x 3 root root 5 Nov 8 22:18 httpd
-rw-r--r-- 1 root root 2515768 Sep 10 03:10 postfix.log
-rw-r----- 1 root other 0 Feb 21 2008 sysidconfig.log
-rw-r----- 1 root sys 2514934 Sep 10 03:10 syslog
-rw------- 1 root root 132 Nov 8 18:45 vsftpd.log
-rw-r--r-- 1 root root 0 Jun 5 2012 zoneinit.log
Как видите, системному журналу два месяца назад, новых записей в последнее время не было. И это все файлы журналов, которые я могу найти.
Я использую SmartOS:
SunOS hostname 5.11 joyent_20120504T040233Z i86pc i386 i86pc
У меня есть root-доступ к этому экземпляру (который на языке SmartOS называется «зоной», afaik), но я не контролирую всю систему.
я прочел Как мне узнать, убил ли Linux-сервер мой процесс и какой процесс он убил?, но в моем случае это не помогает.
Solaris / SmartOS не реализует OOM Killer. Так что это не так. Если приложение пытается запросить память, которая недоступна, приложению будет возвращена ошибка, и ему будет разрешено продолжить работу. Конечно, как приложение справляется с ошибкой - это другой вопрос.
Вы можете использовать truss / dtrace для проверки системных вызовов, выполняемых приложением, и поиска любых возвращаемых ошибок.
Вы также можете следить за процессом с помощью prstat, ps и т. Д., Чтобы узнать, сколько памяти он запрашивает / использует.