2015-07-07 9 views
2

Я развиваю веб-сервис с golang. Он использует пакет net/http и другие пакеты, такие как github.com/go-sql-driver/mysql и redigo (redis). У меня нет проблем при разработке, без ошибок. Когда я помещаю его на сервер в производстве как услугу на заднем плане (т. Е. Запускается с ./myProgram &). Проблема в том, что после нескольких раз, что никогда не бывает одно и то же: это может быть несколько минут или несколько часов, это просто сбой. Служба больше не отображается в netstat: она не работает. Я смотрю память/потребление процессора/открытые соединения tcp, нет ничего анормального. Я также регистрирую информацию об ошибках и запросах на моем сервисе в файле, но нет ничего анормального, он просто сбой.golang webservice неожиданно завершает работу без ошибок

Если у вас есть какие-либо идеи, сообщите мне. Или любую идею на пути я могу отслеживать ошибку.

+3

Возможно, вы дадите сообщение об ошибке, но у вас не будет никакого способа увидеть это, поскольку вы не будете выводить вывод в любом месте. Если вы запустите его с помощью 'nohup ./myProgram &', он запустится в фоновом режиме, но поместит весь вывод в файл 'nohup.out', а затем, как только он разбился, вы можете посмотреть на файл и посмотреть, есть ли сообщение об ошибке. – dave

+1

Очевидно, что никто не сможет отладить ваш веб-сервис для вас, и, очевидно, у вас есть ошибка, которая приводит к фатальной панике (без восстановления) ... Найдите свой путь к конкретной проблеме программирования, и вы обязательно найдете но здесь нечего делать. Что касается устранения вашей ошибки, вы можете использовать шаблон defer/recover для реализации того, что действует как обработчик исключений на уровне приложения (catch block). Затем запишите свою ошибку и используйте эту информацию для написания актуального вопроса. – evanmcdonnal

ответ

2

Вы упомянули, что это происходит только при запуске на производственном сервере.

Возможно, процесс был убит при отключении сеанса входа в систему? Если да, то вы хотите, чтобы либо использовать правильный сценарий запуска, или, по крайней мере, начать его с поЬир

nohup ./myProgram & 

См this answer at serverfault для более подробной информации.

+0

Спасибо! С nohup моя служба больше не разбивается! – GuillaumeP

Смежные вопросы